RxAndroidBle:读取预定义的 GATT 特性

Posted

技术标签:

【中文标题】RxAndroidBle:读取预定义的 GATT 特性【英文标题】:RxAndroidBle: Reading Pre-Defined GATT Characteristics 【发布时间】:2017-05-02 19:10:39 【问题描述】:

我有一个 BLE 设备,它具有多个特性,由定义的默认地址寻址 here

制造商名称字符串、硬件版本字符串、序列号字符串等。

使用 UUID 类,我尝试了几种不同的方法来构造一个 RxandroidBle 可以接受并从这些特征中读取的 UUID。

我最想工作的是这个:

UUID GATT_DSR1_MANUFACTURER_NAME = new UUID(0L, 0x2A29L);

但我只是返回 onError 回调。

RxBleConnection.readCharacteristic 只接受 UUID 或使用 UUID 创建的 BluetoothGattCharacteristic...

【问题讨论】:

【参考方案1】:

创建 UUID (复制自How to correctly use UUID.fromString method?)

在 BLE 规范中有两种 UUID。

完全限定的 128 位长,通常分配给 BLE 设备的特定供应商以实现非标准功能:UUID.fromString("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); 也是完全限定(但由标准定义)具有相同前缀和后缀的 UUID:UUID.fromString("F000xxxx-0451-4000-B000-000000000000"); UUID.fromString("0000xxxx-0000-1000-8000-00805f9b34fb") 其中 xxxx 是填充四个的位置您从 SensorTag Bluetooth Core 规范中获得的字符。为方便起见,标准 UUID 通常使用四个字符标识符来引用。

您的0x2A29L 代表"2A29" 作为xxxx 的字符串。

获取BluetoothGattCharacteristic

在 Android 上,不可能使用UUID 创建一个有效的BluetoothGattCharacteristic。仍然可以调用RxBleConnection.discoverServices() 并从结果中获取。

【讨论】:

以上是关于RxAndroidBle:读取预定义的 GATT 特性的主要内容,如果未能解决你的问题,请参考以下文章

GATT特性BLE读取速度慢

RXAndroidBle 记录网址

在 Android 低功耗蓝牙上读取 GATT 属性的问题

RxBluetoothKit 与 RxAndroidBle

无法使用 BLE gatt 回调函数连续读取数据

泄露的意图接收器rxAndroidble UPDATED