我试图创建一个P2P连接(组),它在Android设备上只有一个所有者和一个客户端。
原因是如果我的GO设备接受第二个对等连接(只是按下了被邀请的窗口),它将收到P2P CONNECTION CHANGED事件(断开连接)。我无法区分正常的P2P断开事件和这种情况。
我的第一个解决方案是在第一次连接后忽略所有连接/断开连接事件,但它会导致其他网站效果。
答案 0 :(得分:0)
我想我找到了解决方案。
我们可以使用 WifiP2pGroup 来检查在收到断开事件时GO和对等方是否真的存在。
当我们收到真正的p2p断开事件时,它找不到GO或任何对等体,反之亦然。
示例:
else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
...
WifiP2pGroup p2pGroup = intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_GROUP);
...
if ( p2pGroup != null ) {
if ( p2pGroup.getOwner() != null ) {
Log.d(TAG, "Go address: " + p2pGroup.getOwner().deviceAddress);
}
else {
Log.d(TAG, "p2pGroup getOwner = null");
return false;
}
Collection<WifiP2pDevice> peerList = p2pGroup.getClientList();
ArrayList<WifiP2pDevice> list = new ArrayList<WifiP2pDevice>(peerList);
Log.d(TAG, "p2pGroup list size = " + list.size());
if ( list.size() <= 0 ) {
return false;
}
///*
String host = null;
for (int i = 1; i < list.size(); i++) {
host = list.get(i).deviceAddress;
Log.d(TAG, "peer #" + i + " address: " + host);
}
//*/
}
else {
Log.d(TAG, "p2pGroup = null");
return false;
}
如果我有任何误解,请告诉我。 谢谢你的阅读。