我想澄清一下 WifiManager.getScanResults()
的行为,即:
启用无线时
- android 是否按固定时间间隔扫描接入点?可以查询/更改间隔吗?可以查询上次扫描的时间吗?有关讨论,请参阅此 answer
- radio 关闭(休眠)时会发生什么情况 - 而 wifi 仍处于启用状态 -
getScanResults()
会继续返回上次扫描结果吗?如何知道是否到了startScan()
的时间?
禁用无线时
getScanResults()
会返回最后的扫描结果吗?还是空列表?或者null
(它有时会返回 null,并且 SO 中发布的 90% 的代码 fragment 都没有处理这个问题)?- 即使在重启后(手机在 wifi 关闭的情况下启动),问题 1 的答案也是正确的?
我问的原因是我需要定期获取可用接入点的列表,我宁愿立即调用 getScanResults()
,而不是 WifiManager.startScan()
然后 getScanResults()
如果我真的不需要 - 因为这涉及获取 wifi 锁等,而且相当微妙。我也不确定 API 级别和手机硬件在多大程度上发挥了作用。
有关困难的详细讨论,请参阅 answer
最佳答案
禁用无线时
getScanResults()
将返回null
...- ...即使在重新启动之后(这是可以预料的 - 如果它一开始没有返回 null,这将是有争议的)
启用无线时
2. 令人惊讶的是 getScanResults()
会在一段时间后返回 null
(在 Nexus One、Android 2.3.7、Cyanogen mod 上——但我怀疑这不是真的很相关)。所以是的,显然无论无线状态如何都必须启动扫描
我猜如果状态是 WIFI_STATE_DISABLING
我仍然对无线启用情况下的答案感兴趣 - 特别是问题 2,如果设备处于 sleep 状态。 Google 群组不允许我发帖(提示)
关于android - WifiManager.getScanResults() - 说明(自动扫描、 sleep 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16137268/