私はAndroid SDKのandroid.bluetoothとandroid.bluetooth.le APIで作業しています。Android BLE - 大きな特性値はチャンク(オフセットを使用)でどのように読み取られますか?
私はアプリを実装したい(中心的役割を果たし、BLEペリフェラルに接続して特性値と記述子を読み込む)。
アプリケーションが読み取る必要がある特性値が大きいため、それを連続する塊で読み取る必要があります。これがどのように達成されたかについての私の理解は、応答に返すべき総データのサブ部分を周辺機器に示す読み出し要求にオフセットを含める必要があるということです。
ただし、APIはBluetoothGatt.readCharacteristic(BluetoothGattCharacteristic)メソッドのみを提供します。前の段落で説明した部分読取り特性要求のタイプを作成するために、オフセット引数を含む読取り特性API呼び出しを見つけることができません。
どのように私はこれらのチャンクされた特性の読み取りを達成するか知っていますか?
注:同様のスタックオーバーフローに関する質問hereがあります。それは私が扱っているAndroidのアスペクトに対する答えを提供しなかった。
o.kですが、GATTクライアントは特性の読み込み要求を行うときにオフセットを指定できませんか?クライアントがすでに特性値の一部を読み込んでいるため、適切なオフセットを含む要求によって残りの部分だけを読み取る必要があるユースケースはどうでしょうか? – user1310850
はい、あなたは正しいです。しかし、GATTクライアントはAndroidのBluetoothスタック内にあり、さまざまなオフセットを要求することができます。 GATTクライアントとアプリケーションの間の外部APIは標準によって定義されていないため、Androidは必要な機能を含めたり除外したりすることがあります。また、実際には「オフセットから読み取る」機能は含まれていません。 – Emil
ありがとう、私は、あなたが記述するように、小さな、個々の応答に読み取られている値を破る世話をするBluetoothスタックを見ている。あなたはこの行動を誘発するものを知っていますか? BluetoothGattServer.sendResponse(....、byte [] value)に渡されたbyte []値パラメータが最大長と等しいかそれを超えたときにトリガされますか? – user1310850