从低功耗蓝牙设备读取流数据

Reading stream data from Bluetooth Low Energy device

我在使用 Bluetooth Low Energy on Android. I have closely done the guide I linked, as well as checked the full example code 时遇到了一些困难。我有一个 BLE 设备,我需要连接它并从中检索数据帧。文档在某一点指示

Discover/Enable service: Service UUID UUID1, Characteristic UUID UUID2

正确执行此操作后,设备应开始流式传输以特定方式格式化的 20 字节帧。

搜索设备、连接到设备并发现设备上的服务我都没有问题。但后来我被困住了。要获得服务,BluetoothGatt's method getServices() is called. This returns a list of BluetoothGattService's, which on their part also contain a list of BluetoothGattCharacteristic's。显然BluetoothGattService的UUID必须等于提供的UUID1,BluetoothGattCharacteristic的UUID等于UUID2。但是我不知道如何'enable'这个具有某些特征的服务。

我的文档也没有提到描述符。我检查过 UUID2 特性中只有一个描述符。所以现在我拥有了可能需要的一切——服务 UUID、特征 UUID 和描述符……但是我该如何读取数据?

您可以遍历所有找到的特征并获取具有 UUID1 和 UUID2 的 BluetoothGattCharacteristic 对象。使用 "UUID.fromString()" 将表示 UUID 的字符串转换为 UUID 对象,然后可以与 ".equals" 一起使用以与 "characteristic.getUuid()".

进行比较

如果我没听错的话,你想读取某个特征的一些数据。当您在 BluetoothDevice 上调用 "connectGatt" 时,您会得到一个 "BluetoothGatt" 类型的对象。在发现服务和特征后使用此 gatt 对象调用 "readCharacteristic()",将所需的 BluetoothCharacteristic 作为参数传递。

我希望我能提供帮助,让我知道我是否应该澄清我的答案

林纳德