通过 Wi-Fi Direct 创建组时,我知道我可以创建一个持久组。
我的问题是:我可以创建一个持久组,但每次更改组所有者(即;每轮组所有者将是组中的设备之一)。
另外,创建持久组时,只需要第一次接受连接,对吗?
通过 Wi-Fi Direct 创建组时,我知道我可以创建一个持久组。
我的问题是:我可以创建一个持久组,但每次更改组所有者(即;每轮组所有者将是组中的设备之一)。
另外,创建持久组时,只需要第一次接受连接,对吗?
您现在可以通过WifiP2pManager.createGroup(..)
. 它将创建一个新组并使呼叫设备 (A) 成为组所有者,并且可以执行您所描述的操作。唯一的问题是,一旦您创建了一个组并连接到另一台设备,另一台设备 (B) 将记住该特定组。如果您尝试在 A 中创建一个新组(例如,再次打开应用程序)并尝试从 B 连接,它将自动加入旧组,并且不会显示为已连接到 A 中的新组。
编辑:有一种方法可以清除所有持久组。它是一个隐藏函数,称为deletePersistentGroups
. 虽然这会消灭每一个,但它似乎是解决您的问题的唯一可靠方法。调用后调用它WifiP2pManager.initialize(..)
,以便您可以使用该频道。
private void deletePersistentGroups(){
try {
Method[] methods = WifiP2pManager.class.getMethods();
for (int i = 0; i < methods.length; i++) {
if (methods[i].getName().equals("deletePersistentGroup")) {
// Delete any persistent group
for (int netid = 0; netid < 32; netid++) {
methods[i].invoke(wifiP2pManager, mChannel, netid, null);
}
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
我不太清楚为什么netid
会上升到 31,我认为这是允许的最大记住连接数。代码取自这里。
你的第一个问题的答案是否定的。“持久 P2P 组的 P2P 组所有者在 P2P 组成立时确定,并且在后续 P2P 组会话中是相同的 P2P 设备。” p2p 规范中的这一行表明您不能更改组所有者。
是的,需要在第一次接受连接。持久组允许重新连接而无需用户干预。
android wifi direct 框架尚不支持持久化行为。