2013-03-08 98 views
7

我正試圖實現一個簡單的android應用程序,它在一臺設備上廣播WifiP2p bonjour服務,並讓第二臺設備發現並連接到它。我非常喜歡教程hereAndroid Wifi Direct服務發現

我有一個有效的Channel對象,DnsSdServiceResponseListenerDnsSdTxtRecordListener,並通過此調用它們設置:

mManager.setDnsSdResponseListeners(channel, servListener, txtListener); 

截至目前剛剛吐出了一些調試信息既聽衆保持清醒簡單。

的問題是,我的DnsSdServiceResponseListener不會被調用,但DnsSdTxtRecordListener不會被調用和所有的論點看起來合法的通過。一個人怎麼能被稱爲而不是另一個呢?

我使用兩臺運行android 4.2.2的實際設備進行測試。

謝謝!

回答

10

終於明白了..種。當得到一個服務請求的情況下,我被指定服務實例名稱和類型匹配創建服務時使用的值...

註冊服務: mServiceInfo = WifiP2pDnsSdServiceInfo.newInstance(Consts.SERVICE_INSTANCE, Consts.SERVICE_REG_TYPE, record);

創建服務請求: mServiceRequest = WifiP2pDnsSdServiceRequest.newInstance(Consts.SERVICE_INSTANCE, Consts.SERVICE_REG_TYPE);

得到當服務請求...... mServiceRequest = WifiP2pDnsSdServiceRequest.newInstance();

和聽衆都被現在叫我刪除了參數newInstance方法。似乎我的第一種方法會過濾掉附近正在播放的其他服務,這就是我原來選擇這種過載的原因。

+0

非常感謝你的男人。你是一個拯救生命的人! – 2017-09-11 06:31:45