2013-04-21 80 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權限才能獲得有效結果。