我正在尝试编写BLE Android应用程序.我发现有时当我打电话时

BluetoothGatt.writeDescriptor()它返回false.

我没有在文档中找到任何关于此功能的限制说明.但堆栈溢出的ppl说我需要等待BluetoothGattCallback.onDescriptorWrite()才能尝试写另一个描述符.

这里有一个回复说BLE is busy用writeDescriptor()而不能写其他的.

这里是another thread说你不能再调用writeCharacteristic()两次.

我的问题是

>这是真的吗?

>是否真的缺少一些用于序列化BLE请求的内部android API缓冲区,并且每个开发人员都必须自己完成它?

>对于不同的功能是否属实?例如,当我调用writeDescriptor()时,我知道在收到onDescriptorWrite()之前我不能再次调用writeDescriptor().但是当我想调用writeCharacteristic()时,我是否必须等待onDescriptorWrite()?

>此外,如果存在功能间依赖性,那么还有哪些功能具有此限制(即:readCharacteristic(),readDescriptor(),requestMtu()…)?

>此外,BluetoothGattServer和BluetoothGatt之间存在相互依赖关系.所以例如当我调用BluetoothGattServer.notifyCharacteristicChanged()时,我应该等待BluetoothGattServerCallback.onNotificationSent才能调用BluetoothGatt.writeDescriptor()或BluetoothGatt.writeCharacteristic()吗? (顺便说一下,关于NotificationSent()的谷歌文档的赞美是运气得当.文件说:

When multiple notifications are to be sent, an application must wait

for this callback to be received before sending additional

notifications.

>最后提出所有这些问题 – 我觉得Android BLE API的记录不足.或者我错了,并且在某处记录了允许调用序列的方法?如果是,请指点我这样的文件?如果不是有一些渠道,我们可以打开谷歌的问题,并要求他们添加到文档的东西?我的意思是它可能不是很多文本 – 像onNotificationSent()这样的函数是正确记录的.他们只需要将这句话复制到其他功能.

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐