2016-09-01 1 views
0

Ich habe einen Rundfunkempfänger die verfügbaren Netzwerke zu scannen, mit dem normalen Code, den Sie leicht hier auf Stackoverflow finden.Update-Liste der verfügbaren Netzwerke - BroadcastReceiver

ich auf meinem Layout für jedes verfügbare Netzwerk ein Symbol am setzen, das Problem ist, dass, wenn ein Netzwerk entfernt wird, zeigt es nach wie vor.

Das Problem ist, dass für diese Rundfunkempfänger, die Aktion/Absicht, dass es die SCAN_RESULTS_AVAILABLE_ACTION hört ist. Am Anfang kann ich den startScan() aufrufen, aber danach wird es keine Scans mehr geben. Es scannt nur, wenn ich manuell zu den WLAN-Einstellungen auf meinem Telefon gehe.

Was wäre eine mögliche Lösung dafür? Es sollte automatisch die Netzwerke entfernen, die nicht mehr verfügbar sind, aber um dies zu tun, muss es erneut scannen, aber ich weiß nicht, wie ich diesen Scan erneut "auslösen" sollte.

mein Code:

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(); 


    } 



} 

Ich weiß, dass ich nur ein Netzwerk mit dem Namen „testete“ und füge hinzu, aber das ist der Name des Wi-Fi auf einem meiner Telefone, die ich diese Prüfung ist. Wenn ich es abstelle, wird es nicht vom anderen Telefon entfernt.

+0

zeigen Sie Ihren Code. –

+0

Bereits den Code –

+0

hinzugefügt Vielleicht ist das, was Sie versuchen zu erreichen http://StackOverflow.com/a/16487291/5545429 –

Antwort

1

Verwenden Sie ein TimerTask

wie diese

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

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

Das ist eine gute Option. Ich mache mir nur Sorgen, ob es für meine App zu aufwendig ist, denn ich mache eine Lite-Version (für ältere Geräte). Ich werde es testen und wenn es nicht zu aufwendig ist, werde ich definitiv Ihre Antwort akzeptieren. Vielen Dank für Ihre Hilfe! –

+0

Gerne helfen :) –

Verwandte Themen