Android WiFi Direct中未收到WIFI_P2P_PEERS_CHANGED_ACTION信号。

13
我正在尝试通过 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 直连,但那完全是另一回事,不是吗?

1
这里遇到了同样的问题。你最终找到了问题所在吗? - lostintranslation
这里的答案有点过时,但可能会告诉你该去哪里查找:如何在Wi-Fi Direct范围内的同行不再可用时收到通知? - Vikram
你找到解决方案了吗? - Santanu Sur
4个回答

3

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


0

你需要在设置/无线局域网/直连Wi-Fi/可用设备下找到设备。


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

1
好的,是的。就像我说的那样,我遵循了http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html上的说明。我不确定还需要提供什么其他信息。我可以发布代码,但它看起来与官方示例中的代码相同,所以那也不会很有趣。 - cargath

0

有两个因素导致了这个问题:

  1. 事件从未发生,也没有广播给其他人。
  2. 尽管事件已发生,但意图过滤器无法捕获它。

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

之后我做了...

intentFilter.addAction(WifiP2PManager.WIFI_P2P_PEERS_CHANGED_ACTION), 

我没有做

ct.registerReceiver(bReceiver, intentFilter).

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

ct.registerReceiver(bReceiver, intentFilter),

但是,它没有被正确执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接