【问题标题】:WifiDirect: Sometimes DnsSdServiceResponseListener callback never called by systemWifiDirect:有时 DnsSdServiceResponseListener 回调从未被系统调用
【发布时间】:2017-01-12 11:10:16
【问题描述】:

这是DnsSdServiceResponseListener的基本用法

    WifiP2pManager manager = (WifiP2pManager) context.getSystemService(Context.WIFI_P2P_SERVICE);
    WifiP2pManager.Channel channel = manager.initialize(context, context.getMainLooper(), null);

    manager.setDnsSdResponseListeners(channel, new WifiP2pManager.DnsSdServiceResponseListener() {
        @Override
        public void onDnsSdServiceAvailable(String instanceName, String registrationType, WifiP2pDevice srcDevice) {
            Log.d("OK" , "called"); 
        }
    }, null);

在这个回调中,与组所有者的 WifiConnection 被启动

问:为什么方法onDnsSdServiceAvailable 可能永远不会被调用?这是一个浮动错误,我无法捕捉并描述它的原因。 为了让它再次工作,我必须手动重启 Wifi

【问题讨论】:

    标签: android p2p wifi-direct wifip2p


    【解决方案1】:

    当 WiFiP2PManager 发现服务实例时,将调用 DnsSdServiceResponseListener。因此,将其添加到管理器对象后,请确保开始发现服务。

    manager.discoverServices(mChannel, new WifiP2pManager.ActionListener() {
    
            @Override
            public void onSuccess() {
                // Success!
            }
    
            @Override
            public void onFailure(int code) {
                // Command failed.  Check for P2P_UNSUPPORTED, ERROR, or BUSY
            }
        });
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-05-30
      • 2019-04-27
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多