我可以在Wi-Fi Direct中更改持久群组中的群组所有者吗?

时间:2013-03-01 07:37:39

标签: android android-wifi wifi-direct wifip2p

通过Wi-Fi Direct创建群组时,我知道我可以建立一个持久群组。

我的问题是:我可以创建一个持久性组,但每次更改组所有者(即每次转动,组所有者将成为该组中的一个设备)。

此外,在创建持久性组时,只需要第一次接受连接,对吧?

3 个答案:

答案 0 :(得分:15)

您现在可以通过WifiP2pManager.createGroup(..)创建新的持久群组。它将创建一个新组并使呼叫设备(A)组所有者可以执行您所描述的操作。唯一的问题是,一旦您创建一个组并连接到另一个设备,其他设备(B)将记住该特定组。如果您尝试在A中创建一个新组(例如,第二次打开该应用程序)并尝试从B进行连接,它将自动加入旧组,而不会显示为在A中的新组中连接它。 / p>

编辑: 有一种方法可以消灭所有持久性组。它是一个名为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,我会认为这是允许的记忆连接的最大数量。代码取自here

答案 1 :(得分:3)

你的第一个问题的答案是否定的。 “持久P2P组的P2P组所有者在P2P组形成时确定,并且在后续P2P组会话中是相同的P2P设备。” p2p规范中的这一行表示您无法“更改群组所有者。”

是的,只需要在第一次接受连接。持久性组允许重新连接而无需用户干预。

答案 2 :(得分:0)

在android wifi直接框架中还不支持持久化行为。