Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中查找Wifip2p组_Android_Wifi Direct - Fatal编程技术网

如何在android中查找Wifip2p组

如何在android中查找Wifip2p组,android,wifi-direct,Android,Wifi Direct,我正在尝试使用WiFi Direct以主从式一对多的方式通过WiFi连接多个设备-一个客户端使用createGroup功能创建一个组,所有其他客户端应手动连接到该组。 当客户按下“发现对等点”按钮时,我想给他一个所有主对等点的列表。 这就是问题所在——我找不到一种方法来区分从节点和发起createGroup请求的主节点 有没有办法过滤掉所有的从属节点,只保留主节点 您应该发现服务而不是对等点,尽管如果您也进行对等点发现,API的工作会更好,因此我建议您使用以下逻辑: 带从机: 开始观察 当您获得

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


有没有办法过滤掉所有的从属节点,只保留主节点

您应该发现服务而不是对等点,尽管如果您也进行对等点发现,API的工作会更好,因此我建议您使用以下逻辑: 带从机:

开始观察 当您获得对等更改事件时,启动主服务器定义的服务类型的服务发现 将发现的服务添加到选择列表中。注意,它们一个接一个地出现,我发现发现的服务之间的间隔最长为5秒 与主人

创建组 添加本地服务以宣传您是主机 启动对等发现,并通过监视发现状态更改确保它在关闭时保持打开状态,从属服务器可能不会看到您的服务广告
实现这一点的一个简单方法是执行以下操作:通过将groupOwnerIntent设置为15,可以将哪个设备设置为组所有者主设备

WifiP2pConfig config = new WifiP2pConfig();
config.groupOwnerIntent = 15;  //Value between 0-15
您还需要将主机的设备名更改为master+itsCurrentName。要更改WiFi Direct设备名称,请在上查看我的答案

现在,每当一台新设备扫描对等设备时,结果将显示哪些设备是以单词Master开头的组所有者


这是一种将主节点从从属节点中筛选出来的简单方法。

是否仅从jelly Bean和其他节点支持服务?你的解决方案听起来不错,但我想等待,看看是否会有更多的跨版本解决方案。顺便说一句,我真的不明白为什么我们需要第一阶段的发现同行…你说的API工作得更好是什么意思?非常感谢你的回复,如果我不想得到一个跨版本的解决方案,我会很快将其标记为例外答案。我的博客中解释了API的工作原理:。基本上,如果你只做一次发现,它可能很好,但在较长时间的使用,它可能会给问题。因此,为了避免出现问题,建议使用peers discovery Always感谢您的回复!我选择了另一个解决方案,但这个方案对我也很有用