安卓Wifi直连服务发现

8
我正在尝试实现一个简单的Android应用程序,该应用程序在一个设备上广播WifiP2p Bonjour服务,并使第二个设备发现并连接到它。我基本上按照这里的教程操作。
我有一个有效的Channel对象、一个DnsSdServiceResponseListener和一个DnsSdTxtRecordListener,并通过以下调用设置它们:
mManager.setDnsSdResponseListeners(channel, servListener, txtListener);

目前,两个监听器仅输出一些调试信息以保持简单。

问题在于我的 DnsSdServiceResponseListener 从未被调用,但是 DnsSdTxtRecordListener 确实被调用了,并且传递的所有参数都看起来正常。一个为什么会被调用而另一个不会呢?

我正在使用两个实际设备进行测试,均运行 Android 4.2.2。

谢谢!

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();

现在两个监听器都被调用了。 我原来选择了第一个重载方法,看起来会过滤掉附近广播的其他服务。


节省时间。我陷入了同样的问题。谢谢。 - Alex Hong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接