Android BLE 连接与发现服务教程
2023-03-17 02:07:04
Android BLE:连接、断开连接和发现服务、特征和符
简介
蓝牙低能耗(BLE)技术在各种行业中变得越来越普遍,因为它提供了低功耗、长距离通信。Android BLE API 允许开发者与 BLE 设备交互,建立强大的应用。
连接 BLE 设备
连接 BLE 设备的第一步是扫描设备。一旦找到要连接的设备,就可以使用 connect()
方法建立连接。该方法返回一个 Future<BluetoothGatt>
对象,用于检查连接状态。
断开 BLE 连接
要断开与 BLE 设备的连接,可以使用 disconnect()
方法。该方法立即断开连接,不会等待任何挂起的操作完成。
发现服务
BLE 设备提供的服务是通过 discoverServices()
方法发现的。该方法返回一个 Future<List<BluetoothGattService>>
对象,用于检索设备提供的服务列表。
特征
服务包含一组特征,这是 BLE 设备可以提供或接收数据的单位。要获取服务的特征列表,可以使用 getCharacteristics()
方法。该方法返回一个 Future<List<BluetoothGattCharacteristic>>
对象,用于检索服务的特征列表。
符
描述符是提供有关特征的额外信息的元数据。要获取特征的描述符列表,可以使用 getDescriptors()
方法。该方法返回一个 Future<List<BluetoothGattDescriptor>>
对象,用于检索特征的描述符列表。
代码示例
// 扫描 BLE 设备
BluetoothLeScanner scanner = bluetoothAdapter.getBluetoothLeScanner();
scanner.startScan(scanCallback);
// BLE 扫描回调
ScanCallback scanCallback = new ScanCallback() {
@Override
public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
// 找到要连接的设备
if (device.getAddress().equals("00:11:22:33:44:55")) {
// 连接 BLE 设备
device.connectGatt(this, false, gattCallback);
}
}
};
// BLE 连接回调
BluetoothGattCallback gattCallback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
if (newState == BluetoothProfile.STATE_CONNECTED) {
// 连接成功
gatt.discoverServices();
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
// 断开连接
}
}
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
// 服务发现成功
List<BluetoothGattService> services = gatt.getServices();
for (BluetoothGattService service : services) {
// 获取服务的特征列表
List<BluetoothGattCharacteristic> characteristics = service.getCharacteristics();
for (BluetoothGattCharacteristic characteristic : characteristics) {
// 获取特征的描述符列表
List<BluetoothGattDescriptor> descriptors = characteristic.getDescriptors();
}
}
}
}
};
常见问题解答
1. 如何知道我的 Android 设备是否支持 BLE?
使用 bluetoothAdapter.isEnabled()
和 bluetoothAdapter.isMultipleAdvertisementSupported()
方法检查 BLE 支持。
2. 如何扫描附近的 BLE 设备?
使用 bluetoothLeScanner.startScan()
方法启动扫描。
3. 如何连接到特定的 BLE 设备?
找到设备后,使用 device.connectGatt()
方法建立连接。
4. 如何发现设备提供的服务?
连接后,使用 gatt.discoverServices()
方法发现服务。
5. 如何获取特征和描述符的信息?
服务发现完成后,使用 service.getCharacteristics()
和 characteristic.getDescriptors()
方法获取特征和描述符的信息。
结论
通过使用 Android BLE API,开发者可以与 BLE 设备交互,建立强大的应用。通过连接、断开连接和发现服务、特征和描述符,开发者可以开发出各种 BLE 应用,从健身追踪器到医疗设备。