我正在尝试使用wifi直接在android Jelly Bean 4.1.1中开发一个应用程序。如果启用了p2p,我立即致电
mManager.discoverPeers(mChannel, actionListener);
之后我接到了回电话
onPeersAvailable(WifiP2pDeviceList)
我正在使用2台三星(Google)Nexus设备进行测试,并且两者都启用了wifi直接。但是这个回调正在返回一个空的同伴列表。但是,例如,如果我点击默认wifi直接界面上的搜索同行按钮,则第二个设备会立即触发
WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION
这个内线调用
onPeersAvailable(WifiP2pDeviceList peers)
因为我正在使用
请求该事件的同伴mManager.requestPeers(mChannel, WifiDirectService.this);
这次我将能够看到同龄人。我看了很多次。
可能的原因是什么? 感谢
答案 0 :(得分:1)
您应该使用Discovering peermethod:
manager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
...
}
@Override
public void onFailure(int reasonCode) {
...
}
});
如果发现过程成功并检测到对等体,则系统会广播WIFI_P2P_PEERS_CHANGED_ACTION意图,您可以在广播接收器中侦听该意图以获取对等体列表。当您的应用程序收到WIFI_P2P_PEERS_CHANGED_ACTION意图时,您可以使用requestPeers()请求已发现的对等方的列表。
完整示例请检查:http://developer.android.com/guide/topics/connectivity/wifip2p.html#discovering