如何在 android 中找到 Wifip2p 组

How to find Wifip2p groups in android

我正在尝试使用 WiFi-Direct 以主从方式(一对多)通过 wifi 连接多个设备 - 一个客户端使用 "createGroup" 函数创建一个组,所有其他客户端客户端应该连接到该组(手动)。 当客户按下 "Discover peers" 按钮时,我想给他一个所有主节点的列表。 这就是问题所在——我找不到区分从属节点和主节点(发起 createGroup 请求的节点)的方法。

有什么办法可以过滤掉所有slave peer只保留master peer吗?

您应该发现服务而不是对等点,尽管 API 如果您也进行对等点发现,效果会更好,因此这是我对您的逻辑的建议: 与奴隶:

  • 启动 peerDiscovery
  • 当您收到 Peers changed 事件时,开始服务发现(对于 service_type 由您的主人定义)
  • 将发现的服务添加到选择列表中(请注意,它们一个接一个地出现,我发现发现的服务之间最多间隔 5 秒)

与大师

  • 创建组
  • 添加本地服务宣扬你是主人
  • 启动 Peer discovery,并通过监视 Discovery 状态变化来确保它保持打开状态(如果它关闭,您的服务广告可能不会被从属设备看到)

实现此目的的一个简单方法是执行以下操作:您可以通过将 groupOwnerIntent 设置为 15 来将哪个设备设置为组所有者(主设备)。

WifiP2pConfig config = new WifiP2pConfig();
config.groupOwnerIntent = 15;  //Value between 0-15

您还需要将主设备的名称更改为类似"Master"+itsCurrentName 的名称。 (要更改 WiFi Direct 设备名称,请查看我在 上的回答)

现在,每当新设备扫描对等设备时,结果将显示哪些设备是 GroupOwners,其名称以单词 "Master" 开头。

这是从对等从属中过滤出主控的简单方法。