我正在尝试在 android Jelly Bean 4.1.1 中直接使用 wifi 开发一个应用程序。如果启用了 p2p,我会立即致电
mManager.discoverPeers(mChannel, actionListener);
之后我会接到回电
onPeersAvailable(WifiP2pDeviceList)
我正在使用 2 台三星(Google)Nexus 设备进行测试,并且两台设备上的 wifi direct 均已打开。但此回调返回一个空的对等点列表。但举例来说,如果我点击搜索同行默认 wifi direct 接口上的按钮,第二个设备立即触发
WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION
这又调用
onPeersAvailable(WifiP2pDeviceList peers)
因为我正在请求同行使用该事件
mManager.requestPeers(mChannel, WifiDirectService.this);
这次我就能见到同行了。我已经多次看到这种情况了。
可能的原因是什么?
谢谢
您应该使用发现对等方法:
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 http://developer.android.com/guide/topics/connectivity/wifip2p.html#discovering
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)