BluetoothGattのwriteCharacteristic()がfalseでリターンする

BLEのAndroidアプリを作成中、時々、BluetoothGattクラスのwriteCharacteristic()メソッドがfalseでリターンする事象が発生しました。複数扱っているBLE機器の中で、特定の機器だけ? 機器側の不具合でしょうか?

何がおこっているかBLEアナライザを使えばよいのですが、安いものだとみれません。海外のサイトを見ても情報がなく、BluetoothGattのステータスは、BluetoothGattCallback時でないとわからない。こういう場合は、少しwaitをおくか、retryしてみるに限ります。しかし解消せず。

そこでたまたま気づいたのですが、BluetoothGattServiceのインスタンスの取得から、retryすると解消しました。

当事象が発生する機器は、機器メーカのカスタムコマンドでアクセスする方式で、機器から測定値を一回受信するのに、最低4回writeCharacteristic()のcallが必要でした。他のメーカさんは大体一回で、二回要するのはペアリング時のみでした。このあたりの仕様とAndroid側の相性があるのかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です