【问题标题】:Android WiFi Direct WIFI_P2P_PEERS_CHANGED_ACTION never receivedAndroid WiFi Direct WIFI_P2P_PEERS_CHANGED_ACTION 从未收到
【发布时间】:2015-01-09 00:23:51
【问题描述】:

我正在尝试通过 WiFi 直接为 Android 制作多人游戏。我按照http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html 上的说明连接到设备。

我与discoverPeers() 一起使用的ActionListener 成功返回,但是我从未收到WIFI_P2P_PEERS_CHANGED_ACTION 意图,我会调用requestPeers()。奇怪的是,当我在一台设备上进入 WiFi 直接系统设置时,另一台设备能够通过我的应用程序成功检测到它。我需要让我的设备在我的应用程序中可被发现吗?在有关 WiFi P2P 的 Android 开发人员资源中,我没有找到任何表明这一点的信息。有 WiFi 直接用于服务发现,但这完全是另外一回事,不是吗?

【问题讨论】:

标签: android wifi-direct


【解决方案1】:

WIFI_P2P_PEERS_CANGED_ACTION 添加到您的广播接收器意图过滤器中。

【讨论】:

【解决方案2】:

您必须在 Settings/Wifi/Direct Wifi/Av​​ailable devices 下找到设备

【讨论】:

    【解决方案3】:

    您还需要在其他设备上运行discoverPeers()
    现在您将收到WIFI_P2P_PEERS_CHANGED_ACTION 意图

    【讨论】:

      【解决方案4】:

      有两个因素导致该问题:

      1. 该事件从未发生,也未广播给其他人。
      2. 虽然事件发生了,但意图过滤器并没有捕捉到它。

      在我的情况下,我发现接收器没有正确获取事件。 原因是我没有正确地将接收器注册到意图过滤器。

      之后

      intentFilter.addAction(WifiP2PManager.WIFI_P2P_PEERS_CHANGED_ACTION), 
      

      我没有做

      ct.registerReceiver(bReceiver, intentFilter).
      

      ct 是活动或上下文,并且 bReceiver 是 WifiDirectBroadcastReceiver。我先写了

      ct.registerReceiver(bReceiver, intentFilter),
      

      但是,它没有正确执行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-23
        • 2016-01-26
        相关资源
        最近更新 更多