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