2013-04-21 81 views
1

我想对WifiManager.getScanResults()行为作出一些澄清,即:WifiManager.getScanResults() - 澄清(自动扫描,睡眠等)

启用无线

  1. 是否为Android扫描接入点在固定的时间间隔?可以查询/更改间隔吗?有人可以查询最后一次扫描的时间吗?有关讨论,请参阅answer
  2. 无线射频关闭(睡眠)时会发生什么 - 虽然wifi仍处于启用状态 - getScanResults()会继续返回上次扫描结果吗?如何知道startScan()的时间?

当无线已禁用

  1. getScanResults()将返回上次扫描的结果吗?或者是一个空的列表?或者null(它有时会返回null,这不会被SO中发布的片段的90%处理)?
  2. 即使在重新启动后(手机以wifi关闭),答案1也是如此?

我想问的原因是我需要定期获取可用的接入点的列表,我宁愿放弃getScanResults()一次,比WifiManager.startScan()然后getScanResults()如果我真的没有 - 因为这涉及到收购wifi锁等等,而且很微妙。我不确定API级别和电话硬件的起作用。

对于困难商量好了看到这个answer

+0

你是什么意思:“如何知道startScan()的时间?” – HiB 2013-04-29 22:48:08

+0

@laplasz:我的意思是 - 我_guess_' getScanResults()'会在CPU上床和/或wifi无线电关闭后返回相同的结果 - 所以我怎么知道这个(getScanResults()返回相同的结果 - 那些最后一次扫描)并启动一个'startScan()'? _Assuming_'getScanResults()'将继续返回相同的结果。在手机进入睡眠状态时,没有关于getScanResults()的行为的文档,在此之前没有关于执行自动扫描的文档 – 2013-04-29 22:52:44

+0

为什么不在调用之前执行'startscan()' 'getScanResults()' – HiB 2013-04-30 07:22:28

回答

3

当无线被禁用

  1. getScanResults()将返回null ...
  2. ...甚至重新启动(这是后预计 - 如果它首先不返回空值,这将是有争议的)

当无线启用

2.Surprisingly足够getScanResults()将在一段时间后返回null(在Nexus One的,安卓2.3.7,氰MOD - 但我怀疑这是不是真的有关)。所以,是的,显然是一个具有不论发起的无线状态扫描

我想如果这样的状态是WIFI_STATE_DISABLING

这是真的还我仍然感兴趣的情况下无线答案已启用 - 尤其是问题2,如果设备睡着了。谷歌集团不会让我后(提示)

-2

公开名单getScanResults()

添加在API级别1

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

返回 在最近的扫描中找到的接入点列表。一个应用必须持有ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION权限才能获得有效结果。