Was ist "zuverlässig schreiben" in BLE?

In Android BLE API ( BluetoothGatt ) gibt es Methoden, die mit zuverlässigen schreibt :

public boolean beginReliableWrite () public void abortReliableWrite (BluetoothDevice mDevice) public boolean executeReliableWrite () 

Es gibt auch einen Rückruf dafür (in BluetoothGattCallback ):

 public void onReliableWriteCompleted (BluetoothGatt gatt, int status) 

Ich kann keine Dokumentation darüber finden. Was ist es? Wie unterscheidet man sich von "normal" (unzuverlässig?) Schreibt?

  • Wie bekomme ich trotzdem RSSI ohne Verbindung zum BLE-Gerät?
  • Java.lang.NoClassDefFoundError auf älteren Android SDK Versionen
  • Können wir iBeacon verwenden, um Daten über Bluetooth in iOS - android zu übertragen?
  • BLE-Gerät wird mit dem Android-Gerät automatisch getrennt. Android BLE
  • Kann Android KitKat Geräte, die Bluetooth LE unterstützen, als Peripheriegerät fungieren?
  • Lesen von mehreren Merkmalen aus einem BLE-Gerät synchron (Empfohlene Methode für Android)
  • Blei-Fehlercode - 128 beim Schreiben in den Charakter
  • Reagieren auf BLE gerichtete Werbung (ADV_DIRECT_IND) in Android
  • One Solution collect form web for “Was ist "zuverlässig schreiben" in BLE?”

    Zuverlässiges Schreiben ermöglicht das Überprüfen der übertragenen Werte und die atomare Ausführung von einer oder mehreren übertragenen Nachrichten.

    Eine gute Erläuterung des zuverlässigen Schreibvorgangs finden Sie im BLE-Teil der Mozillas Boot 2 Gecko Projektdokumentation . Auch wenn es für JavaScript gedacht ist, ist die Beschreibung von beginReliableWrite() insbesondere sehr hilfreich für das Verständnis des Prozesses:

    Sobald eine zuverlässige Schreibvorgang eingeleitet wurde, werden alle Anrufe an characteristic.writeValue () an das entfernte Gerät zur Verifikation gesendet und für die atomare Ausführung in die Warteschlange gestellt. Ein Versprechen, das den geschriebenen Wert trägt, wird als Antwort auf jeden charakteristischen.writeValue () – Aufruf zurückgegeben und die Anwendung ist dafür verantwortlich, ob der Wert genau übertragen wurde. Nachdem alle Merkmale in die Warteschlange eingereiht und überprüft wurden, führt executeReliableWrite () alle Schreibvorgänge aus. Wenn ein Merkmal nicht korrekt geschrieben wurde, wird das Aufrufen von abortReliableWrite () die aktuelle Transaktion annullieren, ohne irgendwelche Werte auf dem Remote-LE-Gerät zu begehen.

    Sie beginnen die zuverlässige schreiben,

     gatt.beginReliableWrite(); 

    Setzen Sie den Wert des Merkmals und schreiben Sie es.

     characteristic.setValue(value); gatt.writeCharacteristic(characteristic); 

    Der writeCharacteristic() Aufruf wird seinen "normalen" Rückruf auslösen. Die Parameterkennlinie enthält den tatsächlichen, geschriebenen Wert, der überprüft werden kann:

     @Override public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { ... if(characteristic.getValue() != value) { gatt.abortReliableWrite(); } else { gatt.executeReliableWrite(); } ... } 

    Durch die Ausführung des zuverlässigen Schreibens wird der OnReliableWriteCompleted (BluetoothGatt Gatt, Int Status) Rückruf ausgelöst.

    Erste Antwort auf StackOverflow, 'hoffe jemand findet es hilfreich.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.