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 类进行扫描
- 注意:从 Android 8.0 开始,
-
关闭蓝牙
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 开始,访问蓝牙设备的位置权限也是必需的,因为蓝牙扫描可能会泄露用户的位置
总结
- BluetoothAdapter 是 Android 中用来管理和操作蓝牙功能的核心类。它提供了访问本地蓝牙硬件、开启和关闭蓝牙、发现附近设备以及管理配对设备的能力