Android BLE、読み書き特性
-
20-12-2019 - |
質問
私は現在Android BLEを開発しています、そしてAndroid Bleスタックの多くの問題が発生しています..
私の開発ツールはAndroid 4.3を備えたSamsung Galaxy Jです。
私はBLEからの特性を読む方法とその特徴を書くことができます(私が受け取ったデータを確認してから、BLEを使って別のデータを送信する)特徴を知りたいです(
そして私はAndroid BLEコールバックがどのように機能するかを理解する深刻な問題があります。 私はこれらの5つの機能を理解していません...そしてマニュアルは明確ではない、誰かが良い魂が簡単な形で説明することができますか???
onCharacteristicWrite
onCharacteristicRead
onCharacteristicChanged
onDescriptorRead
onDescriptorWrite
.
私の現在の状況は、onCharacteristicChanged()コールバックでデータを読み取ることができ、その後受信されたデータを確認しました。
を使用してデータを送信しようとするデータを確認しました。characteristics.setValue(data)
gatt.writeCharacteristic(characteristics)
.
しかし、Android Bleスタックはcharactictisticswrite()で呼び出されていない、そして実際には、Androidはちょうどそこにハングします。
私はAndroid BLEについてGoogleを試してみて、BLEスタックがどのように不安定になっているかについての文句を満たすことができません......
解決
Android BLEからのコールバックのそれぞれにはその機能があります。
OnDescriptorReadとOnDescriptorWrite
BLEデバイスの構成設定を書き込む/読み取るために使用され、いくつかの製造元はBLEデバイスにデータを送信し、BLEデバイスに接続する前に読み取ることによってそれを確認する必要があるかもしれません
OnCharacteristicWrite
これは、通常、BLEデバイスのデータモードでデータをBLEデバイスに送信するために使用されます。 このコールバックは
の入力時に呼び出されます。gatt.writeCharacteristic(characteristics);
.
OnCharacteristicread
BLEデバイスからデータを読み取るために使用されます このコードを書き込むとコールバックが呼び出されます。
gatt.readCharacteristic(characteristics);
.
ONCHARACTERISTISTISTCHANGED
このコールバックは、書かれた特性(特性)を使用してデータを送信しようとしているときに呼び出され、BLEデバイスはいくつかの値で応答します。
通常BLEデバイスには特性がほとんどありません。
- 書き込み - 書き込み特性
- 読み取り - 読み取り特性
データを送信するときには、 write 特性を使用する必要があり、BLEデバイスがAndroidアプリが応答すると読み取り特性
注意事項の非常に重要な点はAndroid BLEスタックであると、一度に1つだけ特性を書くことができます!!
例:同時に2回書き込み特性を2回呼び出しようとする
gatt.writeCharacteristic(characteristics);
gatt.writeCharacteristic(characteristics);
.
Android BLEスタックは2番目の書き込み特性を発行しません。
他のヒント
setValue:characteristics.setValue(data)
の前にgatt.setCharacteristicNotification(Char,true)
を使用してsetNotification
を使用してください。