私はBLE Androidアプリを作成しようとしています。私は時々私が BluetoothGatt.writeDescriptor()を呼ぶときそれが偽を返すことがわかった。Android BLE BluetoothGatt.writeDescriptor()が時々falseを返す
この機能には制限がありません。しかし、ppl on stack overflowは、別の記述子を書く前に、私がBluetoothGattCallback.onDescriptorWrite()を待つ必要があると言っています。
これは、writeDescriptor()でBLE is busyという他の書き込みを行うことができないという返信です。
ここでは、writeCharacteristic()を2回呼び出すことはできないと言っているanother threadです。
私の質問は
- あるが、それは本当に本当ですか?
- BLEリクエストをシリアライズするための内部アンドロイドAPIバッファがありません。すべての開発者がそれを自分で行う必要がありますか?
- さまざまな機能で本当ですか?たとえば、私が
writeDescriptor()
に電話をかけたとき、onDescriptorWrite()
を受け取る前に、私はもう一度writeDescriptor()
に電話することができないことを理解しています。しかしonDescriptorWrite()
を電話してwriteCharacteristic()
に電話する必要がありますか? - また、関数間の依存関係がある場合、他の関数にはこの制限があります(つまり:
readCharacteristic()
,readDescriptor()
、requestMtu()
...)? - また、BluetoothGattServerとBluetoothGattの相互依存性も存在します。例えば
BluetoothGattServer.notifyCharacteristicChanged()
に電話すると、BluetoothGatt.writeDescriptor()
またはBluetoothGatt.writeCharacteristic()
に電話する前にBluetoothGattServerCallback.onNotificationSent
を待つ必要がありますか? (ちなみに、GoogleのドキュメントonNotificationSent()
が運によって適切に文書化されているために賞賛ドク氏は述べています:複数の通知が送信される場合は、このコールバックが追加 通知を送信する前に受信されるため
、アプリケーションが を待たなければなりません
。私は、Android BLE APIは下に文書であることを感じてそれとも私が間違っているとシーケンスを呼び出すメソッド許可されているものをどこかに文書化されてはいますがmにポイントしてくださいすることができた場合は - 。?最後に、すべてのこの質問を持つ
- そのような文書にe?そうでない場合は、Googleで問題を開いて、ドキュメントに何か追加するよう依頼できるチャンネルがありますか?私は多くのテキストではないかもしれないことを意味します -
onNotificationSent()
のようないくつかの関数は適切に文書化されています。彼らはこの文を他の関数にコピーするだけです。