2017-10-10 5 views
0

デバイスデバイスAで動作するようにAndroidでBLEアプリケーションを開発しました。 非常にうまくいっています。今私は次の場合に悩まされています:
私はBと呼ばれる他のBLEアプリケーションを起動し、deviceBというデバイスと接続します。 これは前景です。 私のアプリケーションはバックグラウンドで実行されています。 deviceAをアプリケーションAに接続し始めます。 デバイスAにディスクリプタを書き込み、ステータスGATT_SUCCESSのonWriteDescriptorを受け取るために実行されます。ただし、deviceAはディスクリプタデータを受信できません。 ログファイルでは、アプリケーションBがBLEスキャンを開始/ BLEスキャンを何度も開始することがわかります。
この場合、deviceAがデータを受信できない理由についての専門家はいますか?
ありがとうございます。リモートデバイスにディスクリプタを送信できません

+0

あなたは空中にあなたのディスクリプタ書き込みに対応するATT書き込み要求とATT書き込み応答パケットがないことを意味しますか? – Emil

+0

Emilに返信してくれてありがとう。私はBLEの初心者です。どのようにこれらのパケットをキャプチャできますか?私はAndroidプログラミングの文脈でそれを理解しています。 – teddy

+0

私の質問をもう一度読み、あなたが何を意味するのか理解しています。あなたを混乱させて申し訳ありません。私は詳細を説明します:私のアプリケーションでは、onDescriptorWriteコールバックの後、OnCharacteristicChangedコールバックをGATTから待っています。だから私はデバイス側がディスクリプタ値を受け取ることができないので、応答しなかったと推測しました。 – teddy

答えて

0

Androidが通知を受け取ったときに通知をアプリに転送するようにAndroidに指示するsetCharacteristicNotificationも呼び出す必要があります。

+0

私の質問では、アプリケーションが単独で実行されている(アプリケーションBを起動していない)ときに、私のアプリケーションはうまく動作すると言いました。したがって、setCharacteristicNotificationを呼び出さなければなりません。 – teddy