我正在尝试在 android Jelly Bean 4.1.1 中使用 wifi direct 开发一个应用程序。如果启用了 p2p,我会立即调用
mManager.discoverPeers(mChannel, actionListener);
之后我接到了回电
onPeersAvailable(WifiP2pDeviceList)
我正在使用 2 台三星(谷歌)Nexus 设备进行测试,并且两台设备都开启了 wifi direct。但是这个回调返回一个空的对等点列表。但是例如,如果我点击默认 wifi 直接接口(interface)上的 Search Peers 按钮,第二个设备会立即触发
WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION
这反过来调用
onPeersAvailable(WifiP2pDeviceList peers)
因为我正在为该事件请求同行
mManager.requestPeers(mChannel, WifiDirectService.this);
这次一定能见到同行。我已经多次看到这种情况。
可能的原因是什么? 谢谢
最佳答案
您应该使用 Discovering peer 方法:
manager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
...
}
@Override
public void onFailure(int reasonCode) {
...
}
});
如果发现过程成功并检测到对等点,系统会广播 WIFI_P2P_PEERS_CHANGED_ACTION Intent ,您可以在广播接收器中收听该 Intent 以获取对等点列表。当您的应用程序收到 WIFI_P2P_PEERS_CHANGED_ACTION Intent 时,您可以使用 requestPeers() 请求已发现对等点的列表。
完整示例,请查看:http://developer.android.com/guide/topics/connectivity/wifip2p.html#discovering
关于java - Android 上的 WiFi Direct 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12729814/