Android BLE:onCharacteristicChanged 在 onCharacteristicWrite 之前在 writeCharacteristic 之后触发

Android BLE : onCharacteristicChanged triggers before onCharacteristicWrite after writeCharacteristic

成功连接后,我正在使用 DefaultWriteType 编写一个特性。

紧接着 onCharacteristicChanged 触发器,然后 onCharacteristicWrite 触发器具有相同的特征 UUID,该 UUID 已写入但值作为响应出现,因为特征与 onCharacteristicChanged 的响应相同。

总结:

onCharacteristicChanged 如何在 onCharacteristicWrite 之前触发?

据我所知,onCharacteristicWrite 指示您的写入操作是否成功。 onCharacteristicChanged responds/notify 到我们写入 ble 设备的命令。

这有可能吗,或者它是否会脱离 Ble 循环?

我认为这是意料之中的。

  1. 因为onCharacteristicWrite只是表示,你的写操作成功与否。

  2. 一个BluetoothGattCharacteristic只能保存一个值,即最后发送或接收的值。

  3. 两个操作都使用相同的 BluetoothGattCharacteristic 实例。

因此,关于您描述的序列,"normal" 您在两个回调中具有相同的值。由于上次操作您的特性中的 value 是 BLE 通知。

我认为这不是最好的主意,它是如何在 BLE 堆栈中实现的。如果操作互不干扰,多idempotent/immutable就更好了。