【问题标题】:How to Stop peer discovery in WifiDirect Android如何在 WifiDirect Android 中停止对等点发现
【发布时间】:2015-07-15 19:35:35
【问题描述】:

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

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

【问题讨论】:

  • 我认为这是 API 的一个特性。基本上,您可以尝试在关闭 Wifi 或关闭设备时是否有相同的行为。我很确定其他设备会报告在短时间内仍然看到它。
  • 我只是无法看到对等方,但也能够连接到它。这就是问题所在。一旦对等点发现停止,我不希望其他设备连接。
  • 你试过我的建议了吗?基本上 API 也在处理传入的连接,因此您的应用程序可能没有太多话要说。除了它当然可以请求有关它的信息。

标签: android p2p wifi-direct wifip2p


【解决方案1】:

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

您需要为WIFI_P2P_DISCOVERY_CHANGED_ACTION 意图注册一个广播接收器。正如您在文档中看到的那样,额外的 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
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多