2011-06-14 2 views
2

안드로이드 장치를 통해 사용 가능한 무선 네트워크를 스캔하려고합니다. 코드 덩어리는 다음과 같습니다.안드로이드에서 매초마다 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(); 

       } 

버튼을 누르면 스캔을 시작하는 것과 같은 액션 처리기 아래에 넣었습니다. 이제 내 문제는 내 휴대 전화가 특정 네트워크에 연결되면 Wi-Fi 스캔 결과를 자동으로 업데이트하지 않는다는 것입니다. 이전 데이터로 유지됩니다. 버튼을 눌러 스캔을 시작하고 매초마다 스캔 결과를 업데이트하려고합니다.

저는 HTC 매직에서 OS 2.1을 사용하고 있습니다.

아무도 도와 줄 수 있습니까?

답변

2

정확히 매초마다 검색 결과를 어떻게 업데이트 하시겠습니까?

브로드 캐스트를 수신 할 때마다 목록을 업데이트하고 목록 채우기 후에 시작 스캔 코드가 나타납니다.

대신 타이머 작업을 사용하여 매초마다 스캔 결과 목록을 업데이트하는 별도의 메소드를 실행하고 For 루프를 다시 실행할 수 있습니다. 어쩌면

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