在Android的BLE API(BluetoothGatt)中,有一些方法可以处理可靠写入:
public boolean beginReliableWrite ()
public void abortReliableWrite (BluetoothDevice mDevice)
public boolean executeReliableWrite ()
还有一个Callback(在BluetoothGattCallback中):
public void onReliableWriteCompleted (BluetoothGatt gatt, int status)
我无法找到相关文档。它是什么?它与#34; normal"有什么不同? (不可靠?)写道?
答案 0 :(得分:48)
可靠写入允许检查传输的一个或多个传输消息的传输值和原子执行。
可以在BLE part of Mozillas Boot 2 Gecko Project documentation中找到可靠写入程序的良好解释。尽管它适用于JavaScript,但beginReliableWrite()
的描述对于理解该过程非常有帮助:
一旦启动了可靠的写入事务,所有的调用都会发送到 characteristic.writeValue()被发送到远程设备 验证并排队等待原子执行。一个承诺 随身携带书面值以回应每一个 characteristic.writeValue()调用和应用程序负责 用于验证值是否已准确传输。后 所有特征都已排队等待验证, executeReliableWrite()将执行所有写操作。如果有特色 如果编写不正确,调用abortReliableWrite()将取消 当前事务没有在远程LE上提交任何值 设备
你开始可靠的写作,
gatt.beginReliableWrite();
设置特征的值并写入。
characteristic.setValue(value);
gatt.writeCharacteristic(characteristic);
writeCharacteristic()
调用将触发其“正常”回调。参数characteristic
包含可以验证的实际写入值:
@Override
public void onCharacteristicWrite(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic,
int status) {
...
if(characteristic.getValue() != value) {
gatt.abortReliableWrite();
} else {
gatt.executeReliableWrite();
}
...
}
执行可靠写入将触发onReliableWriteCompleted(BluetoothGatt gatt, int status)
回调。