如何在WifiDirect Android

时间:2015-07-15 19:35:35

标签: android p2p wifi-direct wifip2p

我试图使用下面的代码直接阻止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");
        }
    });
}

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

1 个答案:

答案 0 :(得分:6)

这不是问题。实际上你解释了这个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
    }
}