android - WifiManager.getScanResults() - 说明(自动扫描、 sleep 等)

标签 android android-wifi android-wireless

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

启用无线时

  1. android 是否按固定时间间隔扫描接入点?可以查询/更改间隔吗?可以查询上次扫描的时间吗?有关讨论,请参阅此 answer
  2. radio 关闭(休眠)时会发生什么情况 - 而 wifi 仍处于启用状态 - getScanResults() 会继续返回上次扫描结果吗?如何知道是否到了 startScan() 的时间?

禁用无线时

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

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

有关困难的详细讨论,请参阅 answer

最佳答案

禁用无线时

  1. getScanResults() 将返回 null...
  2. ...即使在重新启动之后(这是可以预料的 - 如果它一开始没有返回 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/

相关文章:

android - Wifip2p 网络信息中的 "isRoaming"是什么意思?

javascript - Jquery 页面无法在浏览器中的 android 强制门户登录上运行

android - 监听WIFI状态

c++ - 在 C++ 中编写外部程序以与 wpa_supplicant 交互

android - 需要向来电者播放音频

android - Lint 错误 : Suspicious equality check: equals() is not implemented in Object DiffUtilEquals

android studio calendar set maxDate 18年前

android - MAC中Android Studio的无线USB调试

android - 为 android 4.1 设备编译和构建 “iw”?

Android - 从 WebView 绘制到 PDF Canvas