2011-06-14 92 views
2

我試圖通過我的Android設備掃描可用的wifi網絡。這裏的代碼塊 -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(); 

       } 

我已經把它放在一個動作處理程序,如如果一個按鈕被按下,它開始掃描。現在我的問題是,當我的手機連接到特定網絡時,它不會自動更新無線網絡掃描結果。它只是保留舊數據。我想按下按鈕開始掃描並每秒更新掃描結果。

我在HTC Magic中使用OS 2.1。

任何人都可以幫助我嗎?

回答

2

究竟如何嘗試每秒更新掃描結果?

它在我看來只是在收到廣播時才更新列表,而開始掃描碼出現在列表填充後。

相反,您可以使用計時器任務來更新運行一個獨立的方法,該方法每秒更新一次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; 

       } 
} 

可能?

+0

謝謝...而不是使用循環我剛剛創建一個使用計時器的線程。看着你的時間選項,它進入了我的想法,它的工作。非常感謝 :)。 – Pow 2011-06-14 08:11:27