2013-03-08 89 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