我正在尝试发现WiFi Direct对等Android设备,但只有当两部手机都运行WiFi Direct发现时才会发现对等体 .
到目前为止我所理解的是,只有当他们同时扫描WiFi直接连接时,他们才会看到对方 . 这是因为WiFi Direct的工作方式是当手机扫描WiFi Direct连接时,他们将与其他对等方协商接入点或从属设备的角色 . 因此,两者都需要调用discoverPeers()以使其自身可被发现并找到附近的设备 .
在我的应用程序中我想要的是,只有一个设备启动扫描过程,并且应列出所有支持wifi direct的附近设备 . 那么如何使用wifi Direct实现这一目标呢?还有其他替代品吗?
提前致谢
3 回答
使用WiFiDirect无法实现目标 . 您需要在所有要连接的设备上打开WiFiDirect(以编程方式或手动方式) .
但是有一种方法可以减少发现过程的努力 . 您可以使用a service discovering而不是regular p2p connection.
它允许仅在一个设备(客户端)上进行p2p发现 . 第二个设备(服务器)正在等待连接邀请 .
在我们的一个应用程序中,我们遇到了一个问题:当设备执行p2p发现时,网络的带宽极度降低,导致已连接的设备断开连接 .
使用服务发现确实帮助了我们 . 您可以使用the code作为示例 .
我能找到的唯一选择是导航到Wi-Fi Direct设置 . 在Android 6.0设备上,它可以像这样实现:Wi-Fi - >设置(右上角的3个点菜单) - > Wi-Fi Direct . 最有可能它开始发现过程本身......
我扣除的是Wi-Fi Direct不是一个独立的功能,例如,蓝牙 . 它是Wi-Fi的一部分,因此无法单独打开/关闭 . Wi-Fi P2P网络创建始于群组所有者协商,该协商只能在支持Wi-Fi Direct的设备之间执行 . 随着P2P组的形成,它也可用于Wi-Fi传统设备(它的工作方式类似于标准的ad-hoc网络,所有支持Wi-Fi的设备都可以看到) .
因此,为了创建P2P网络(组),您必须与其他P2P设备协商,这只有在您打开Wi-Fi Direct时才有可能 .
您已经注意到设备都应该处于发现模式 . 我目前正在开发一个关于WIFI-DIRECT的项目,是的,它非常不可靠 . 在连接和/或断开连接后,您也会发现很难发现 . 所以我所做的是,当用户打开设备WIFI时,我使用线程(无限循环中的背景)每8秒运行一次发现并更新UI . 这对我有用,用户不必连续搜索 .
希望它有所帮助(记得更新你的清单,我没有显示)