【问题标题】:Reading stream data from Bluetooth Low Energy device从低功耗蓝牙设备读取流数据
【发布时间】:2015-04-18 06:43:57
【问题描述】:

我在使用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 和描述符……但是如何读取数据呢?

【问题讨论】:

    标签: android bluetooth bluetooth-lowenergy android-bluetooth


    【解决方案1】:

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

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

    我希望我能提供帮助,如果我应该澄清我的答案,请告诉我

    林纳德

    【讨论】:

    • 调用readCharacteristic(characteristic),很遗憾没有调用onCharacteristicRead()-callback。
    • @jdepypere 你能测试一下当你在主线程上调用 readCharacteristic(...) 时回调是否仍然没有被调用吗?在后台线程上调用 BLE 方法有很多问题...stackoverflow.com/a/20507449/1990080
    • 我用this method运行mBluetoothGatt.readCharacteristic(characteristic),但是还是没有调用回调...
    • 很好 - 它返回错误。什么可能导致这种情况?
    • 我从来没有见过,而且文档总是很稀少...您检查过该特征是否允许阅读吗?仔细检查 nRF 主控制面板应用程序可能很有用:play.google.com/store/apps/…
    猜你喜欢
    • 1970-01-01
    • 2012-05-29
    • 2016-10-09
    • 2016-06-29
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多