Android BLE:onCharacteristicChanged触发器在onCharacteristicWrite之后写入OnCharacteristic之前

Android BLE:onCharacteristicChanged触发器在onCharacteristicWrite之后写入OnCharacteristic之前,android,bluetooth-lowenergy,iot,Android,Bluetooth Lowenergy,Iot,成功的ble连接之后,我正在使用DefaultWriteType编写一个特性 在这之后,onCharacteristicChanged触发,并且在这之后,onCharacteristicWrite触发具有相同特征的UUID,该UUID是被写入的,但具有值,作为响应,其特征与onCharacteristicChanged的响应相同 总结: onCharacteristicWrite之前onCharacteristicChanged如何触发 我相信onCharacteristicWrite表示您的写

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

在这之后,
onCharacteristicChanged
触发,并且在这之后,
onCharacteristicWrite
触发具有相同特征的UUID,该UUID是被写入的,但具有值,作为响应,其特征与
onCharacteristicChanged
的响应相同

总结:

onCharacteristicWrite之前onCharacteristicChanged如何触发

我相信onCharacteristicWrite表示您的写入操作是否成功。 并且onCharacteristicChanged响应/通知我们为其写入设备的命令


这是可能的还是超出了可编程周期?

我认为这是意料之中的

  • 因为
    onCharacteristicWrite
    仅指示写入操作是否成功

  • BluetoothGattCharacteristic
    只能保存一个值,这是最后发送或接收的值

  • 两个操作都使用相同的
    BluetoothGattCharacteristic
    实例

  • 因此,关于所描述的序列,在两个回调中具有相同的值是“正常的”。因为上一次操作操作了特征中的
    ,这是一个不可编辑的通知


    我认为这不是最好的主意,它是如何在BLE堆栈中实现的。如果这些操作不会相互干扰,并且更为幂等/不可变,那就更好了

    好的,但是序列呢?为什么在onCharacteristicWrite之前onCharacteristicChanged触发器?我相信onCharacteristicChanged会响应我们将cmd写入Ble设备的值,正如您所说的onCharacteristicWrite仅表示您的写入操作成功与否。好的,我理解您的BluetoothGattCharacteristic保持值概念。查看我编辑的问题(摘要)。您连接的设备何时启动通知?在确认writeCharacteristic操作成功之前还是之后?另一方面,我完全不知道在Android BLE堆栈上调用的顺序(在确认操作成功之前发出通知。因此我觉得理解起来很奇怪。IOS设备也有相同的序列,从您上次的评论中可以确信。