我正在试验 Android 的 Wi-Fi Direct(如果您愿意,也可以是 P2P)。我认为它在我的两部手机之间工作得非常好,但我意识到我遇到了 WifiP2pManager.discoverPeers()
和/或 WifiP2pManager.requestPeers()
的问题。我观察到这些结果:
在整整 1 分钟多的时间里,没有发现任何对等点,也没有触发任何回调。我也通过 Android Wi-Fi 设置的 Wi-Fi Direct 部分观察到这一点。这很奇怪,因为有时发现几乎立即完成。
我有一个 Roku 设备和一个手机 B,放在手机 A 旁边。虽然所有设备都连接到我的 Wi-Fi,但 Roku 只在大约 10% 的时间内出现,而手机 A 和 B 互相出现.
当我断开两部手机与所有 Wi-Fi 的连接并进行另一次扫描时,Roku 出现了(!!!)但手机 B 没有出现,直到我至少刷新了十次。
我的两部手机是 Nexus 7(运行 4.4.4)和 Nexus 5(运行 5.0)。
最佳答案
我最近一直在开发一个基于 WiFi Direct(带有 WiFi P2P 服务发现)的连接系统的应用程序,我可以肯定地说的一件事是整个事情是......的巨大痛苦。主要是因为缺少文档,但也因为在开发基于 wifi-direct 的解决方案时,您需要在进行任何方法调用之前基本上注意所有内容(尤其是来自监听器的所有回调)。
我猜有两件最烦人的事:
一个未记录的
UNKNOWN_ERROR
(我认为它的int
代码是-3
)正在ActionListener
中被抛出|onFailure
方法。这似乎是 wifi 守护程序本身的某种问题。似乎唯一可以防止这种情况发生的方法是在您开始使用 WiFi direct 之前重置 WiFi。您的方法调用处于错误状态 - 例如
WIFI_P2P_STATE_CHANGED_ACTION
尚未在您的广播接收器中收到WIFI_P2P_STATE_ENABLED
或者如果“your_device”没有收到正确的status
在WIFI_P2P_THIS_DEVICE_CHANGED_ACTION
.这通常会导致onFailure
调用你的一个ActionListener
s(例如ERROR
或BUSY
失败原因)。
关于android - 为什么发现 Android Wi-Fi Direct 的对等点如此不可靠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27476428/