5

我试图使用下面的代码在 wifi direct 中停止对等点发现。

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");
        }
    });
}

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

4

1 回答 1

7

这不是问题。其实你解释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
    }
}
于 2015-07-16T18:45:10.833 回答