Android WifiP2pManager 发现服务超时

Posted

技术标签:

【中文标题】Android WifiP2pManager 发现服务超时【英文标题】:Android WifiP2pManager discoverServices timeout 【发布时间】:2015-07-30 22:50:47 【问题描述】:

我一直在使用 android WifiP2pManager 来发现其他设备上的特定服务。我想知道函数是否有已知的超时时间

public void discoverServices (WifiP2pManager.Channel c, WifiP2pManager.ActionListener listener)

我在 Android API 中找不到任何关于它的资源。我知道我可以为成功发现设置一个侦听器,但我不知道如何判断是否没有发现。

另外,有什么方法可以在不完全停止 wifi 管理器功能的情况下停止发现?

提前感谢您的帮助!

【问题讨论】:

【参考方案1】:

据我所知,clearServiceRequests() 应该可以很好地取消服务发现。

总的来说,我也没有找到任何关于超时的文档,因此我一直在使用 1 分钟超时计时器来解决这个问题。

请注意,一旦您调用了一次回调,您应该取消超时计时器,之后您应该等待发现新服务。

我也没有看到任何文档说明不同服务之间的服务发现超时应该多长时间,但通过一些测试,我确定它应该至少为 5 秒,以便很好地发现可用的服务。

【讨论】:

我也是这么想的!感谢您的确认。【参考方案2】:

https://sphen.proxmobil.com/android-wi-fi-direct-service-discovery/

这个博客提到超时是120秒。

服务发现只会持续 120 秒,从 WifiP2pManager 的 discoverServices 方法被调用。如果申请 开发人员需要较长时间的服务发现,他们将 需要重新调用WifiP2pManager.discoverServices方法。

【讨论】:

以上是关于Android WifiP2pManager 发现服务超时的主要内容,如果未能解决你的问题,请参考以下文章

Android WifiP2pManager 加密/安全

Android WifiP2PManager - 几个问题

NSD 和 WifiP2pManager 有啥不同?

WiFiP2PManager、OnPeersAvailable、DeviceList.Count 为零 - 始终

WifiP2pManager.requestPeers() 在 onPeersAvailable() 中不断返回旧对等点

检查android wifip2p连接是不是成功?