【发布时间】:2013-08-03 10:11:09
【问题描述】:
我记得在"Guide and Hint"-doc 中阅读到Samsung BLE API (archived page):
三星 F/W 和堆栈最重要的概念之一是 它的同步性质。也就是说,如果我们调用例如,
writeCharacteristic用于特定特征,如果它返回true,下一次调用任何BluetoothGatt或BluetoothGattServer方法 应该在收到onCharacteristicRead回调后完成。 这是因为堆栈设计为仅支持和处理一个 GATT 一次调用,例如,如果您调用writeCharacteristic或readCharacteristic很快就会有任何特性 在第一个之后,它被忽略了。
- 这是否也适用于引入的 BLE 的本机实现 在 Android 4.3 中?
- Samsung API 一次也只支持一个连接的 GATT 设备。 这在原生 API 中是否发生了变化?
【问题讨论】:
-
Google 的问题跟踪器上有一个与 API 的同步性质相关的线程:code.google.com/p/android/issues/detail?id=58381
-
我刚刚为所有写入实现了一个队列,到目前为止这似乎运行良好。
-
@Ash 根据 SAMSUNG 提供的文档,行为不限于写操作。是的,使用队列是解决该问题的常用方法。 “到目前为止运行良好”:很难测试和重现另一个命令取消的情况。当你的 BLE 代码变得更复杂时,你经常会遇到问题,因为你根据之前的调用做了更多的事情。我只在完成之前的一个(收到答案)之后或之前的一个未能在适当的时间完成之后进行下一个 BLE 操作。顺便说一句,你的 cmets 更适合作为这个问题的答案。
-
@Ash 你能分享你的实现吗?
标签: android bluetooth-lowenergy android-4.3-jelly-bean gatt