2014-10-07 34 views
2

所以我有一个应用程序使用服务发现将多个设备连接到一台主机。我首先设置一切,然后调用WifiP2pManager.discoverServices(..)。然后,一个设备选择宣传该服务(类似游戏大厅)。其他设备发现它很好,可以连接没有问题。无线直连组所有者意图无法运作

当一台设备已经托管服务并尝试连接到已连接到其服务的设备(它形成了一个持久性组并忽略所有组拥有者意图值)时,就会出现问题。 假设我们有一台托管服务的设备A.另一个设备B连接到A,并且A是组所有者,并且在Wifi直接设置菜单中形成持久组。两人都完成了使用该应用程序,并决定在以后再次使用它。现在B决定承担这项服务。 A尝试连接到B,但最终成为组所有者,即使由于先前的持续连接B是托管服务的组织。 稍后,我将设备B的GOI(组主人意图)设置为15(主机),设备A的GOI设置为0,并完全忽略它。编辑[其实我只是设置设备A的GOI,因为只有一个设备调用连接。]

我的问题是:有什么办法从设置菜单中以编程方式删除旧组?或者你有关于如何解决我的问题的另一个建议?

我尝试过使用WifiP2pManager.createGroup(..)创建一个新组,并且暂时修复了组所有者问题,但是在启动服务并连接两次后使用同一设备连接到旧的已记住的组,并没有出现连接到该程序。这可以通过不允许持久性组很容易地解决,但它似乎还没有作为一个选项。

回答

0

我遇到了类似的问题。我正在开发一个简单的服务器客户端应用程序,当我尝试切换滚动时发生了同样的问题。每当应用程序关闭时,我都会通过在服务器应用程序中调用removeGroup方法来解决此问题。这样我确信这个团队被移除了。

0

每当你groupOwnerIntent零见下图:

WifiP2pConfig config = new WifiP2pConfig(); 
config.groupOwnerIntent = 0; 

然后,每当你想设备B从设备A连接则装置A成为客户端和B设备成为服务器,反之亦然只需要是不应该有任何小组都加入了记忆。这从设备设置不起作用,所以不要尝试。您需要创建自己的自定义设置。

0

在应用关闭时使用mP2pManager.removeGroup()

P.S.我发现.groupOwnerIntent没有实际意义。您将其设置为要连接的设备。从文档来看,它完全不清楚它是否属于命令设备或命令设备连接