2015-04-17 63 views
0

我在Bluetooth Low Energy on Android上遇到了一些困难。我已经密切地完成了我链接的指南,以及检查完整示例code。我有一个BLE设备需要连接并从中检索数据帧。在一个点上的文件指示要从蓝牙低功耗设备读取流数据

查询/启用服务:服务UUID UUID1,特征UUID UUID2

一旦这已被正确执行时,该装置应开始串流的在一个格式化的20个字节的帧具体做法。

寻找设备,连接到它并发现它的服务我没有问题。但后来我卡住了。要获得服务,调用BluetoothGatt的方法getServices()。这将返回一个BluetoothGattService的列表,其中也包含BluetoothGattCharacteristic的列表。很明显,BluetoothGattService的UUID必须等于UUID1和BluetoothGattCharacteristic的UUID到UUID2。但我不知道如何“启用”具有某些特征的此服务。

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

回答

1

您可以遍历所有找到的特征,并获取带有UUID1和UUID2的BluetoothGattCharacteristic对象。使用“UUID.fromString()”将表示UUID的字符串转换为UUID对象,该对象可以与“.equals”一起使用以与“characteristic.getUuid()”进行比较。

如果我正确理解了你,你想读取一些特征的数据。当你在你的BluetoothDevice上调用“connectGatt”时,你会得到一个类型为“BluetoothGatt”的对象。在发现服务和特性后,使用这个gatt对象在其上调用“readCharacteristic()”,将期望的BluetoothCharacteristic作为参数传递。

我希望我能帮助,让我知道,如果我要澄清我的答案

Linard

+0

调用'readCharacteristic(特性)','的onCharacteristicRead()'-callback不幸不叫。 – jdepypere

+0

@jdepypere你可以测试当你在主线程上调用readCharacteristic(...)时是否还没有调用回调吗?在后台线程上调用BLE方法有很多问题... http://stackoverflow.com/a/20507449/1990080 –

+0

我使用了[this method](http://stackoverflow.com/a/11125271/) 1319187)运行'mBluetoothGatt.readCharacteristic(特征)',但回调仍然没有调用... – jdepypere

相关问题