Wifi Direct 组所有者意图不起作用

Posted

技术标签:

【中文标题】Wifi Direct 组所有者意图不起作用【英文标题】:Wifi Direct Group Owner intent not functioning 【发布时间】:2014-10-07 17:23:05 【问题描述】:

所以我有一个应用程序使用服务发现将多个设备连接到一个主机。我首先设置所有内容,然后调用 WifiP2pManager.discoverServices(..)。然后一个设备选择宣传该服务(有点像游戏大厅)。其他设备都觉得很好,可以连接没问题。

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

我的问题是:有没有办法以编程方式从设置菜单中删除旧组?或者您对如何解决我的问题有其他建议?

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

【问题讨论】:

【参考方案1】:

我遇到了类似的问题。我正在开发一个简单的服务器客户端应用程序,当我尝试切换卷时发生了同样的问题。我通过在每次应用程序关闭时调用服务器应用程序中的removeGroup 方法来解决它。这样我就可以确保该组已被删除。

【讨论】:

【参考方案2】:

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

附:我发现 .groupOwnerIntent 没有实际意义。您将其设置为要连接的设备。从文档中完全不清楚它是命令设备的属性还是要连接的设备的命令

【讨论】:

【参考方案3】:

每当您将groupOwnerIntent 设置为零时,请参见下文:

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

然后,每当您尝试从设备 A 连接设备 B 时,设备 A 将成为客户端,设备 B 成为服务器,反之亦然,只需要在记住的组中不添加任何组。这在设备设置中不起作用,所以不要尝试。您需要创建自己的自定义设置。

【讨论】:

以上是关于Wifi Direct 组所有者意图不起作用的主要内容,如果未能解决你的问题,请参考以下文章

WiFi-Direct 获取设备名称

Wifi Direct 组所有者地址

UPI 隐式意图选择器在 Redmi 设备上不起作用

WiFi Direct 在持续连接期间重新分配组所有者

如何在 Wifi-Direct Android 中创建特定组所有者

如果更好的设备通过 wifi direct 加入网络,组所有者会改变吗?