如何在Android中为BLE编写快速稳定的特性?

How to write characteristic fast and stable for BLE in Android?

我正在 Android 开发 BLE。 Android可以通过Gatt.writeCharacteristic向BLE设备发送数据。

但是当我连续写入 Characteristic 到 BLE 设备时(1 秒内 5 次),我会得到 GATT_DISCONNECTED 并且它 return null 当我尝试 getServiceGetCharacteristic.

我在市场上见过一些 BLE LED 产品。它使用 Android 中的颜色选择器,如下图所示:

当用户在颜色选择器上快速改变颜色时,BLE LED 也会立即改变颜色。

如何像市面上的BLE LED产品一样,在Android中为BLE写出快速稳定的特性?

当您调用 gatt.writeCharacteristic 时,您需要做两件事:

  1. 您需要对gatt读写请求进行排队,这样当您发起读写请求时,必须等待BluetoothGattCallback中对应的回调,才能请求下一次读写。这是一个 Android BluetoothGatt 行为,没有很好的记录。
  2. 和上面的1有点关系,你应该检查gatt读写请求的boolean return值。如果它不 return 为真,则您的请求失败。当您发出下一个请求时某些其他 gatt 操作仍在进行中时,就会发生这种情况。

我发现快速读取(或写入)BLE 特性的最佳方法是发出请求,等待回调并从回调中发出下一个请求。如果有更快或更可靠的方法,我不知道。