2016-03-19 3 views

Antwort

8

Suche nach verfügbaren WLAN-Netzwerken

public class MainActivity extends Activity { 


    WifiManager mainWifi; 
    WifiReceiver receiverWifi; 

    StringBuilder sb = new StringBuilder(); 


    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 

     receiverWifi = new WifiReceiver(); 
     registerReceiver(receiverWifi, new IntentFilter(
       WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
     if(mainWifi.isWifiEnabled()==false) 
     { 
      mainWifi.setWifiEnabled(true); 
     } 


     doInback(); 
    } 

    public void doInback() 
    { 
     new Handler().postDelayed(new Runnable() { 

      @Override 
      public void run() 
      { 
       // TODO Auto-generated method stub 
       mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 

       receiverWifi = new WifiReceiver(); 
       registerReceiver(receiverWifi, new IntentFilter(
         WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
       mainWifi.startScan(); 
       doInback(); 
      } 
     }, 1000); 

    } 

    public boolean onCreateOptionsMenu(Menu menu) { 
     menu.add(0, 0, 0, "Refresh"); 
     return super.onCreateOptionsMenu(menu);} 
    public boolean onMenuItemSelected(int featureId, MenuItem item) { 
     mainWifi.startScan(); 

     return super.onMenuItemSelected(featureId, item);} 


    @Override 
    protected void onPause() 
    { 
     unregisterReceiver(receiverWifi); 
     super.onPause(); 
    } 

    @Override 
    protected void onResume() 
    { 
     registerReceiver(receiverWifi, new IntentFilter(
       WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
     super.onResume(); 
    } 

    class WifiReceiver extends BroadcastReceiver 
    { 
     public void onReceive(Context c, Intent intent) 
     { 

      ArrayList<String> connections=new ArrayList<String>(); 
      ArrayList<Float> Signal_Strenth= new ArrayList<Float>(); 

      sb = new StringBuilder(); 
      List<ScanResult> wifiList; 
      wifiList = mainWifi.getScanResults(); 
      for(int i = 0; i < wifiList.size(); i++) 
      { 

       connections.add(wifiList.get(i).SSID); 
      } 


     } 
    } 



} 

erstellen WifiConfiguration Instanz

WifiConfiguration conf = new WifiConfiguration(); 
conf.SSID = "\"" + networkSSID + "\""; 

für WEP-Netzwerk

conf.wepKeys[0] = "\"" + networkPass + "\""; 
conf.wepTxKeyIndex = 0; 
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 

Für WPA Netzwerk

conf.preSharedKey = "\""+ networkPass +"\""; 

Für Offenes Netzwerk

conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 

fügen Sie es zu Android wifi Manager

WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); 
wifiManager.addNetwork(conf); 

es ermöglichen

List<WifiConfiguration> list = wifiManager.getConfiguredNetworks(); 
for(WifiConfiguration i : list) { 
    if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) { 
     wifiManager.disconnect(); 
     wifiManager.enableNetwork(i.networkId, true); 
     wifiManager.reconnect();    

     break; 
    }   
} 
+0

private final Handler Handler = neu Handler() - Fehler in dieser Zeile erhalten dh Handler ist abstrakt kann nicht instanziiert werden –

+0

Fehler bei handler.postDelayed (neue Runnable() , kann Methode nicht beheben postDelayed –

+1

Ich habe den Code Teil über Handler bearbeitet, und warten Sie nicht auf jemanden, der das tun genauer Code für dich. Betrachten Sie dies als nur einen Thread, der Ihnen hilft, Ihre Bedürfnisse zu erfüllen. –

0

Von der ersten Seite nur drittes Beispiel für verfügbare Scan bekommen wifi für mich gearbeitet, und ich ändern sie Wählen Sie BSSID mit:

[bssid = wifiScanList.get(i).BSSID; 
    if (desiredMacAddress.equals(bssid)){ APPEND TO SHOWING LIST...} 
] 

es testet es und es hat ohne Probleme funktioniert + gab, was ich wollte. von der zweiten Seite bekommen, wie es gewünscht Zugangspunkt zu verbinden versuchen, sie es ohne jede Probleme dann arbeiten, aber ich bin nicht sicher kann es gibt mir diese Funktionalität

Get WiFi's SSID without connecting to it?

eine letzte Sache, wenn Sie Sekunde getestet ein echtes Gerät wird seine Einstellung ändern, was zu Problemen führen wird

Verwandte Themen