3

私の Droid 2 では、wifi.getScanResults() が短時間古い値を返すようです。

これは、私が家にいる間、wifi.getScanResults() が私のホーム ネットワークを表示することを意味します。数マイル離れた通りをドライブしても、wifi.getScanResults() は最初の 1 ~ 2 回の試行でホーム ネットワークを表示します。3回目の試行で、ホームネットワークがなくなりました。

質問: 最新の 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 に答える