Android 开发低功耗蓝牙(BLE)扫描配对连接指南
低功耗蓝牙(BLE)是一种优化过的蓝牙技术,适用于能耗低、需要快速传输数据的设备。在这篇文章中,我将教您如何在 Android 应用中实现 BLE 扫描、配对和连接。我们首先了解整个流程,然后逐步进行具体的实现。
流程简介
实现 BLE 扫描和连接的过程可以分为几个主要步骤,以下是这些步骤的概述:
步骤 | 描述 |
---|---|
1. 权限申请 | 在 AndroidManifest.xml 中声明权限 |
2. 检查设备支持 | 确保设备支持 BLE 和蓝牙功能 |
3. 初始化 BLE | 获取 BluetoothAdapter 实例 |
4. 开始扫描 | 启动 BLE 设备的扫描过程 |
5. 连接设备 | 选择设备并进行连接 |
6. 配对设备 | 如果需要,进行配对 |
7. 数据传输 | 通过连接进行数据传输 |
8. 断开连接 | 完成后断开设备连接 |
每一步的实现
接下来,我们将逐步解释每一个步骤,并给出相关代码示例。
1. 权限申请
首先,我们需要在 AndroidManifest.xml
文件中声明蓝牙和位置权限,因为 BLE 扫描需要访问位置权限:
<manifest xmlns:android="
package="com.example.bleexample">
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application
... >
...
</application>
</manifest>
2. 检查设备支持
在您的 Activity 中,您需要检查设备是否支持 BLE:
BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter();
if (bluetoothAdapter == null || !bluetoothAdapter.isMultipleAdvertisementSupported()) {
// 设备不支持 BLE
}
3. 初始化 BLE
当确认 BLE 支持后,您可以获取 BluetoothAdapter
实例。打开蓝牙:
if (bluetoothAdapter != null && !bluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
4. 开始扫描
您可以通过 BluetoothLeScanner
启动 BLE 设备的扫描:
BluetoothLeScanner bluetoothLeScanner = bluetoothAdapter.getBluetoothLeScanner();
ScanCallback scanCallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result) {
super.onScanResult(callbackType, result);
// 处理找到的设备
}
};
bluetoothLeScanner.startScan(scanCallback);
5. 连接设备
当您扫描到设备后,可以选定一个设备连接:
BluetoothDevice device = result.getDevice(); // 从 ScanResult 中获取设备
BluetoothGatt bluetoothGatt = device.connectGatt(this, false, bluetoothGattCallback);
6. 配对设备
如果您的设备需要配对,可以通过以下代码进行配对:
device.createBond(); // 创建配对
7. 数据传输
连接成功后,您可以通过 BluetoothGatt
实例进行数据传输:
BluetoothGattService service = bluetoothGatt.getService(YOUR_SERVICE_UUID);
BluetoothGattCharacteristic characteristic = service.getCharacteristic(YOUR_CHARACTERISTIC_UUID);
// 读取数据
bluetoothGatt.readCharacteristic(characteristic);
// 写入数据
characteristic.setValue(YOUR_DATA);
bluetoothGatt.writeCharacteristic(characteristic);
8. 断开连接
最后,当您完成与设备的交互后,可以断开连接:
bluetoothGatt.disconnect();
bluetoothGatt.close();
数据流关系图
在整个BLE数据传输过程中,各个组件之间的关系可以通过以下关系图呈现:
erDiagram
Device {
String name
String address
}
BluetoothGatt {
String serviceUUID
String characteristicUUID
Byte[] data
}
Device ||--o| BluetoothGatt : connectsTo
总结
在本指南中,我们详细介绍了在 Android 中实现 BLE 扫描、配对和连接的每一个步骤。我们展示了每一步所需的代码并附上了注释,以确保您可以理解代码的功能。
从申请权限开始,检查设备支持,直到数据传输和断开连接,您现在应该能够独立地实现一个简单的 BLE 应用。如果您在开发中还有其他问题,不妨参考 Android 官方文档或BLE开发者社区。继续探索,祝您在 Android 开发的道路上越走越远!