2016-09-01 5 views
0

У меня есть широковещательный приемник для сканирования доступных сетей с нормальным кодом, который вы можете легко найти здесь, в StackOverflow.Обновить список доступных сетей - BroadcastReceiver

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

Проблема в том, что для этого широковещательного приемника действие/намерение, которое он прослушивает, - это SCAN_RESULTS_AVAILABLE_ACTION. Вначале я могу вызвать startScan(), но после этого сканирования больше не будет. Он только сканирует, если я вручную перейду к настройкам wifi на своем телефоне.

Что может быть возможным для этого? Он должен автоматически удалить сети, которые больше не доступны, но для этого он должен снова выполнить сканирование, но я не знаю, как я должен «запускать» повторное сканирование.

мой код:

public class WifiReceiver extends BroadcastReceiver { 

    private Vector<String> keywords; 

    public void onReceive(Context c, Intent intent) { 
     System.out.println("TOU AQUI NO WIFI RECEIVER !! "); 
     List<ScanResult> connResults=wifimanager.getScanResults(); 
     List<String> scanResultsSSID = new ArrayList<>() ; 

     for(int i=0;i<connResults.size();i++){ 
      String ssid=connResults.get(i).SSID; 

      scanResultsSSID.add(ssid); 

      if(ssid.contains("teste")){ 
       System.out.println("Estou no : " + connResults.get(i).toString()); 
       radarTextView.addKeyWord(ssid); 
      } 

     } 

     keywords=radarTextView.getKeyWords(); 

     for(int j=0;j<keywords.size();j++){ 
      String tmp=keywords.get(j); 
      System.out.println("this is one of the keyword : "+ tmp); 
      if(!scanResultsSSID.contains(tmp)){ 
       radarTextView.removeKeyWord(tmp); 
       System.out.println("removed this : "+tmp); 
      } 
     } 

     radarTextView.show(); 


    } 



} 

Я знаю, что я только добавить сеть с названием «TESTE», но это название Wi-Fi на одном из моих телефонов, которые я пробовал. Если я отключу его, он не будет удален с другого телефона.

+0

показать код. –

+0

Уже добавлен код –

+0

Возможно, это то, чего вы пытаетесь достичь http://stackoverflow.com/a/16487291/5545429 –

ответ

1

Используйте TimerTask

как этот

Timer timer = new Timer(); 
int DELAY=0; 
int INTERVAL=10000;       

timer.scheduleAtFixedRate(new TimerTask() { 
     @Override 
     public void run() { 
      connResults = wifimanager.getScanResults(); 
     } 
    },DELAY,INTERVAL); 
+0

Это хороший вариант. Я просто волнуюсь, если это будет слишком много для моего приложения, поскольку то, что я делаю, является облегченной версией (для более старых устройств). Я собираюсь проверить его, и если он не слишком потребляет, я обязательно приму ваш ответ. Огромное спасибо за вашу помощь! –

+0

С удовольствием помогите :) –

Смежные вопросы