8

WifiP2p bonjour サービスを 1 つのデバイスでブロードキャストし、2 つ目のデバイスを検出して接続する単純な Android アプリケーションを実装しようとしています。ここのチュートリアルにほぼ従いました。

有効なChannelオブジェクト aDnsSdServiceResponseListenerと aDnsSdTxtRecordListenerがあり、次の呼び出しで設定します。

mManager.setDnsSdResponseListeners(channel, servListener, txtListener);

現時点では、両方のリスナーがデバッグ情報を吐き出すだけで、非常にシンプルに保たれています。

問題は、 myDnsSdServiceResponseListenerが呼び出されることはありDnsSdTxtRecordListener ませんが、 が呼び出され、渡されたすべての引数が正当に見えることです。一方を呼び出して、もう一方を呼び出せないのはなぜですか。

私は、Android 4.2.2 を実行している 2 つの実際のデバイスを使用してテストしています。

ありがとう!

4

1 に答える 1

12

最後にそれを理解した..ちょっと。サービス リクエストのインスタンスを取得するときに、サービスの作成時に使用した値と一致するように、サービス インスタンスの名前とタイプを指定していました...

サービスの登録: mServiceInfo = WifiP2pDnsSdServiceInfo.newInstance(Consts.SERVICE_INSTANCE, Consts.SERVICE_REG_TYPE, record);

サービス リクエストの作成: mServiceRequest = WifiP2pDnsSdServiceRequest.newInstance(Consts.SERVICE_INSTANCE, Consts.SERVICE_REG_TYPE);

サービス リクエストを取得するときに、newInstance メソッドへの引数を削除しました... mServiceRequest = WifiP2pDnsSdServiceRequest.newInstance();

両方のリスナーが呼び出されています。私の最初の方法は、近くでブロードキャストされている他のサービスを除外するように思われます。

于 2013-03-09T21:47:21.283 に答える