其他分享
首页 > 其他分享> > 如何在WifiDirect Android中停止对等点发现

如何在WifiDirect Android中停止对等点发现

作者:互联网

我试图使用下面的代码直接在wifi中停止对等体发现.

public void StopPeerDiscovery(){
    manager.stopPeerDiscovery(channel, new ActionListener() {
        @Override
        public void onSuccess() {
            Log.d(WiFiDirectActivity.TAG,"Stopped Peer discovery");
        }

        @Override
        public void onFailure(int i) {
            Log.d(WiFiDirectActivity.TAG,"Not Stopped Peer discovery");
        }
    });
}

我能够在日志中看到成功消息(停止对等点发现).但其他设备仍然能够在同行发现中查看它.
我在这里做错了吗?请指教.
谢谢

解决方法:

这不是问题.实际上你对onSuccess的解释是错误的.此onSuccess不会告诉您对等方发现已停止,而是表示您的请求已成功发送到负责上述调用的硬件/框架,它将异步停止发现并通知您(如前所述).同样,它的失败只是告诉你的调用没有成功到达框架.

您需要为WIFI_P2P_DISCOVERY_CHANGED_ACTION意图注册BroadcastReceiver.正如您可以在文档中看到的那样,额外的EXTRA_DISCOVERY_STATE可以让您知道对等发现的发现是否已停止.

if (WifiP2pManager.WIFI_P2P_DISCOVERY_CHANGED_ACTION.equals(intent.getAction()))
{
    int state = intent.getIntExtra(WifiP2pManager.EXTRA_DISCOVERY_STATE, 10000);
    if (state == WifiP2pManager.WIFI_P2P_DISCOVERY_STARTED)
    {
        // Wifi P2P discovery started.
    }
    else
    {
        // Wifi P2P discovery stopped.
        // Do what you want to do when discovery stopped
    }
}

标签:android,p2p,wifi-direct,wifip2p
来源: https://codeday.me/bug/20190528/1169774.html