我想对WifiManager.getScanResults()
的行为进行一些澄清,即:
启用无线功能时
Android是否以固定间隔扫描接入点?可以查询/更改时间间隔吗?可以查询上一次扫描的时间吗?有关讨论,请参见此answer
关闭无线电(休眠)时-仍启用wifi时会发生什么?getScanResults()
会继续返回最后的扫描结果吗?怎么会知道现在是startScan()
的时间?
禁用无线功能时getScanResults()
是否将返回最后的扫描结果?还是一个空列表?还是null
(有时确实会返回null,而SO中发布的90%的摘要均未对此进行处理)?
即使重新启动后(电话在关闭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(如果设备处于睡眠状态)。 Google网上论坛不允许我发帖(提示)