0

したがって、同じクラスの 2 つの Bluetooth GATT サーバー オブジェクトがあります。それぞれに IntentFilter と BroadcastReceiver があります。オブジェクトが Bluetooth サーバーからデータを受信すると、BroadcastReceiver で特定の関数を実行します。

残念ながら、2 つのリクエスト (各オブジェクトから 1 つ) を送信すると、レスポンスは 4 回実行されます。私が理解したように、最初のリクエストによる応答は両方のオブジェクトの BroadcastReceiver で実行され、次に 2 番目のオブジェクト要求からの応答が両方のオブジェクトで実行されます。

BroadcastReceiver がリクエスト元のオブジェクトでのみコードを実行するように指定するにはどうすればよいですか?

4

1 に答える 1

0

への呼び出しsendBroadcast()と のBroadcastReceiver両方が同じオブジェクト内にある場合、ブロードキャストを使用することが本当に良いアプローチであるかどうか疑問に思う必要があります (ただし、コードがなければ、それは仮定です)。

ただし、質問に直接答えるには、 のフィルタ可能なパラメータの 1 つを使用Intentして 2 つを区別する必要があります。たとえば、アクションが同じ場合Uriは、データ フィールドに別の値を設定するか、各オブジェクトに固有の別の MIME タイプ パラメータを設定します。次に、レシーバーを登録するときに、IntentFilterこれらの特定のパラメーターをオブジェクトからフィルターに適用します。

于 2012-07-13T18:07:34.513 に答える