2011-06-14 101 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