在使用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,我认为那可能是允许记住的最大连接数。代码摘自这里。Android WiFi Direct框架尚不支持持久性行为。