3

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

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

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

可能的选项:

  • 如果 ScanResult 的 .level 最小,则假定它超出范围。

  • 使用未记录的 API 以某种方式清除 ScanResults 。

我有一些这样的代码:

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();
        }
4

2 回答 2

3

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

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

增加了一点延迟,但可以工作(在我附近找到很多 AP)。

于 2011-10-14T13:34:28.740 回答
1

你确实得到了最后一个结果。如果它已过时,您可以开始新的扫描并设置BroadCastReceiver以获取新列表。

于 2011-06-16T20:49:53.403 回答