Android开发 - (适配器)Adapter类中(蓝牙适配器)BluetoothAdapter实现类解析

什么是 BluetoothAdapter

BluetoothAdapter 是一个重要的类,用于管理和操作蓝牙功能。它提供了与蓝牙设备进行交互的能力,它代表了本地蓝牙适配器的功能。简单来说,它是你与设备上的蓝牙硬件进行交互的接口。通过 BluetoothAdapter,你可以控制蓝牙的开启和关闭发现附近的蓝牙设备管理已经配对的设备

主要功能

  • 检查蓝牙是否支持BluetoothAdapter 可以用来检查设备是否支持蓝牙

  • 获取 BluetoothAdapter 实例:它提供了一个方法来获取当前设备的蓝牙适配器实例

  • 开启和关闭蓝牙:可以使用 BluetoothAdapter开启或关闭蓝牙

  • 发现设备:它允许查找附近的蓝牙设备

  • 管理配对设备:可以查看已经配对的蓝牙设备列表,并与之进行连接

如何使用 BluetoothAdapter

  • 获取 BluetoothAdapter 实例

    // getDefaultAdapter() 方法返回设备的默认蓝牙适配器。如果设备不支持蓝牙,这个方法会返回 null
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    
  • 检查蓝牙是否支持

// 如果 bluetoothAdapter 是 null,说明设备不支持蓝牙功能
if (bluetoothAdapter == null) {
    // 设备不支持蓝牙
    Log.d("Bluetooth", "Bluetooth is not supported on this device.");
}
  • 开启或关闭蓝牙

    // isEnabled() 方法检查蓝牙是否已经开启
    if (!bluetoothAdapter.isEnabled()) {
        // 蓝牙未开启,尝试开启蓝牙
        // ACTION_REQUEST_ENABLE 是一个意图,用于请求用户开启蓝牙
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        // startActivityForResult() 会启动系统的蓝牙开启请求对话框
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
    } else {
        // 蓝牙已开启
        Log.d("Bluetooth", "Bluetooth is already enabled.");
    }
    
    • 注意用户需要授权应用来开启蓝牙
  • 发现设备

    BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
        @Override
        public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
            // 发现设备时调用
            Log.d("Bluetooth", "Device found: " + device.getName() + ", " + device.getAddress());
        }
    };
    // startLeScan() 方法开始扫描附近的 BLE(蓝牙低功耗)设备
    bluetoothAdapter.startLeScan(leScanCallback); // LeScanCallback 回调会在找到设备时被调用:在回调中,你可以获取到设备的名称和地址
    
    • 注意:从 Android 8.0 开始,startLeScan() 方法已被弃用推荐使用 BluetoothLeScanner 类进行扫描
  • 关闭蓝牙

    if (bluetoothAdapter.isEnabled()) {
        // disable() 方法会关闭蓝牙。如果蓝牙已经开启,这个方法会关闭它
        bluetoothAdapter.disable();
    }
    

权限和用户授权

  • 在使用 BluetoothAdapter 时,你需要在 AndroidManifest.xml 文件中声明蓝牙权限

    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!-- 或 ACCESS_COARSE_LOCATION -->
    
    • Android 6.0 开始,访问蓝牙设备的位置权限也是必需的,因为蓝牙扫描可能会泄露用户的位置

总结

  • BluetoothAdapterAndroid 中用来管理和操作蓝牙功能的核心类。它提供了访问本地蓝牙硬件开启和关闭蓝牙发现附近设备以及管理配对设备的能力
posted @ 2024-08-24 16:45  阿俊学JAVA  阅读(129)  评论(0编辑  收藏  举报