Android BLE Gatt特性WRITE_TYPE_NO_RESPONSE无效

时间:2014-02-15 00:43:24

标签: android bluetooth-lowenergy

我开发了一款连接CC2540 BLE外设的Android应用程序。

当我执行类型无响应的特征写入(WRITE_TYPE_NO_RESPONSE)时,我仍然在应用程序级别获得onCharacteristicWrite的回调。这种行为是否正确?

我知道Android设备和外围设备之间可能存在低级别确认。

但我问的原因是因为这导致了一个问题,即只有在收到回调后我才能发送一个写入,这会减慢应用程序中的速度。

对此行为的任何启示都将受到赞赏。

谢谢,

2 个答案:

答案 0 :(得分:6)

当我尝试进行一些性能测试时,我遇到了同样的问题,发现当我特意使用WRITE_TYPE_DEFAULT时,我停止了响应。可能存在导致反向行为的android常量错误,但我不太确定。

答案 1 :(得分:4)

你只能在低级别上一次进行1次传输,所以你需要一个回调来告诉堆栈何时准备发送另一个命令。 如果你试图在没有等待空中接口准备就绪的情况下发送几个,你可以严重崩溃BLE堆栈!这在早期的iOS CoreBluetooth上发生了很多。 如果一个应用程序崩溃BLE堆栈,则手机需要重置或蓝牙必须关闭再打开以重置堆栈。 回调只是告诉你堆栈已通过空中接口发送请求,而不是收件人已确认。为此,您将使用另一个api,它将使BLE堆栈重新发送多次(取决于协商连接参数的方式)。

在BLE规范中明确指出,一次只能进行1次传输。

如果您只是使用write requ

敲击API