Проблема в сканировании WiFi сети каждую секунду в Android - PullRequest
2 голосов
/ 14 июня 2011

Я пытаюсь отсканировать доступную сеть Wi-Fi через устройство Android. Вот кусок кода -

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 автоматически. Это просто остается со старыми данными. Я хочу нажать кнопку, чтобы начать сканирование и обновлять результаты сканирования каждую секунду.

Я использую ОС 2.1 в HTC Magic.

Может кто-нибудь помочь мне, пожалуйста?

1 Ответ

2 голосов
/ 14 июня 2011

Как именно вы пытаетесь обновлять результаты сканирования каждую секунду?

мне кажется, что вы обновляете список только при получении широковещательной рассылки, а код начального сканирования появляется после заполнения списка.

Вместо этого вы можете использовать задачу таймера для обновления, запуститьотдельный метод, который обновляет список результатов сканирования каждую секунду и снова запускает цикл 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;

                }
}

возможно?

...