2

Androidデバイスを介して利用可能なwifiネットワークをスキャンしようとしています。これがコードのチャンクです-

WifiManager wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);

                registerReceiver(new BroadcastReceiver() {
                    @Override 
                    public void onReceive(Context context, Intent intent) {
                        WifiManager wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);
                        List<ScanResult> results = wifiManager.getScanResults(); 

                        //int newRSSI= intent.getIntExtra(wifiManager.EXTRA_NEW_RSSI, 0);
                        //WifiDistance wifi_dis = new WifiDistance();

                        for (ScanResult result : results) {

                            textView.append("\nSSID="+result.SSID + ", " + "Strength(dBm)=" + result.level + ", AP: "+ result.BSSID);
                            wifi+="\n"+result.SSID + ", " + result.level + ", "+ result.BSSID;


                            //WifiDistance.getWifiDistance().distanceCalc(result.BSSID, result.level);
                    }, 
                    new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

                    // Initiate a scan.
                wifiManager.startScan();

                }

これをアクションハンドラーの下に置きました。たとえば、ボタンを押すとスキャンが開始されます。今私の問題は、私の電話が特定のネットワークに接続されているとき、wifiスキャン結果を自動的に更新しないことです。古いデータのままです。ボタンを押してスキャンを開始し、スキャン結果を毎秒更新したい。

HTCMagicでOS2.1を使用しています。

誰か助けてくれませんか?

4

1 に答える 1

2

正確には、スキャン結果を毎秒どのように更新しようとしていますか?

ブロードキャストが受信されるたびにリストを更新するだけで、リストの作成後にstartscanコードが表示されるので、私には見えます。

代わりに、タイマータスクを使用して、Scanresultリストを毎秒更新する別のメソッドを更新して実行し、For-Loopを再度実行することができます。

何かのようなもの:

Public void RunEverySecond(){
List<ScanResult> results = wifiManager.getScanResults();

for (ScanResult result : results) {

                        textView.append("\nSSID="+result.SSID + ", " + "Strength(dBm)=" + result.level + ", AP: "+ result.BSSID);
                        wifi+="\n"+result.SSID + ", " + result.level + ", "+ result.BSSID;

                }
}

多分?

于 2011-06-14T07:02:46.267 に答える