1

我想对 的行为进行一些澄清WifiManager.getScanResults(),即:

启用无线时

  1. android是否以固定间隔扫描接入点?可以查询/更改间隔吗?可以查询上次扫描的时间吗?有关讨论,请参阅此答案
  2. 当无线电关闭(睡眠)时会发生什么 - 而 wifi 仍然启用 - 将getScanResults()继续返回最后的扫描结果?怎么知道是不是时候了startScan()

禁用无线时

  1. getScanResults()会返回最后的扫描结果吗?还是一个空列表?或者null(它有时会返回 null 并且这不是由 SO 中发布的 90% 的片段处理的)?
  2. 即使在重新启动后(手机在 wifi 关闭的情况下启动),1 的答案也是正确的?

我问的原因是我需要定期获取可用接入点的列表,我宁愿立即调用getScanResults(),而不是WifiManager.startScan()如果getScanResults()我真的不需要的话 - 因为这涉及获取 wifi 锁等并且相当微妙. 我也不确定 API 级别和手机硬件在多大程度上发挥了作用。

有关困难的良好讨论,请参阅此答案

4

2 回答 2

3

禁用无线时

  1. getScanResults()将返回null...
  2. ...即使在重新启动后(这是意料之中的——如果它一开始没有返回 null,这将是有争议的)

启用无线时

2.令人惊讶的是,一段时间后getScanResults()会返回null(在 Nexus One、Android 2.3.7、Cyanogen 模块上 - 但我怀疑这并不相关)。所以是的,显然无论无线状态如何,都必须启动扫描

我想如果国家是WIFI_STATE_DISABLING

我仍然对启用无线的情况下的答案感兴趣 - 特别是问题 2,如果设备处于睡眠状态。Google 群组不允许我发帖(提示)

于 2013-04-27T22:09:43.787 回答
-2

公共列表 getScanResults ()

API 级别 1中添加

返回最新接入点扫描的结果。

返回在最近扫描中找到的接入点列表。应用程序必须持有ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION获得许可才能获得有效结果。

于 2016-01-24T06:41:18.450 回答