【问题标题】:Android Wifi Direct Service DiscoveryAndroid Wifi Direct 服务发现
【发布时间】:2013-02-23 13:10:48
【问题描述】:

我正在尝试实现一个简单的 android 应用程序,该应用程序在一台设备上广播 WifiP2p bonjour 服务,并让第二台设备发现并连接到它。我几乎按照教程here.

我有一个有效的Channel 对象、一个DnsSdServiceResponseListener 和一个DnsSdTxtRecordListener,并通过这个调用设置它们:

mManager.setDnsSdResponseListeners(channel, servListener, txtListener);

到目前为止,两个侦听器都只是吐出一些调试信息以使其真正简单。

问题是我的DnsSdServiceResponseListener 从未被调用,但DnsSdTxtRecordListener 确实被调用 并且传入的所有参数看起来都是合法的。怎么可以叫一个不叫另一个?

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

谢谢!

【问题讨论】:

    标签: android android-wifi bonjour wifi-direct


    【解决方案1】:

    终于想通了..有点。在获取服务请求的实例时,我指定了服务实例名称和类型以匹配创建服务时使用的值...

    注册服务: 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();

    现在正在调用两个侦听器。似乎我的第一种方法会过滤掉附近正在广播的其他服务,这就是我最初选择这种重载的原因。

    【讨论】:

    • 节省时间。我陷入了同样的问题。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多