来自Android的旧结果wifi.getScanResults()

时间:2011-06-16 20:34:12

标签: android android-wifi

在我的Droid 2上,wifi.getScanResults()似乎在短时间内返回旧值。

这意味着当我在家时,wifi.getScanResults()将显示我的家庭网络。如果我在几英里之外的街道上行驶,wifi.getScanResults()仍然会显示我的家庭网络进行前1或2次尝试。在第三次尝试我的家庭网络已经消失。

问题: 有没有办法只获得最新的wifi.getScanResults()?

可能的选择:

  • 如果ScanResult的.level是 最小,假设它已经过了 范围。
  • 以某种方式清除ScanResults,
    使用未记录的API。

我有一些像这样的代码:

context.registerReceiver(this, new IntentFilter(
            WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
wifi.startScan();

...

if (intent.getAction().equalsIgnoreCase(
            WifiManager.SCAN_RESULTS_AVAILABLE_ACTION))
        {
            List<ScanResult> results = wifi.getScanResults();
        }

2 个答案:

答案 0 :(得分:3)

我到目前为止找到的解决方案是关闭WiFi,然后重新打开,因为这会导致全新的扫描:

wifi.setWifiEnabled(false);
wifi.setWifiEnabled(true);

添加一点延迟,但有效(在我附近找到很多AP)。

答案 1 :(得分:1)

你确实得到了最后的结果。如果它已过时,您可以start a new scan并设置BroadCastReceiver以获取新列表。