Autore Topic: Elencare le reti WiFi disponibili  (Letto 1473 volte)

Offline ceklo

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +1
    • Mostra profilo
Elencare le reti WiFi disponibili
« il: 20 Ottobre 2012, 23:21:47 CEST »
+1
Buon giorno,

Desidero sapere come si fa a elencare le reti WiFi disponibili, così come si vede quando si agisce manualmente.

Da codice, attivo WiFi con le seguenti istruzioni:
Codice: [Seleziona]
WifiManager mio_wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (mio_wifi.getWifiState() == WifiManager.WIFI_STATE_DISABLED) {
       mio_wifi.setWifiEnabled(true);
}

Ma così si attiva WiFi e basta senza dare opportunità all'operatore di eseguire una scelta.
Non so come creare una finestra per la selezione della rete desiderata tra le disponibili.

Vi chiedo cortesemente aiuto.
Grazie
Saluti
ceklo
« Ultima modifica: 20 Ottobre 2012, 23:25:23 CEST da ceklo »

Offline salvatore.zagarella

  • Utente normale
  • ***
  • Post: 239
  • Respect: +2
    • Mostra profilo
    • Ieeng Solution
Re:Elencare le reti WiFi disponibili
« Risposta #1 il: 31 Ottobre 2012, 17:46:44 CET »
0
Ecco un po' di codice DA TESTARE...

Codice (Java): [Seleziona]
public class WifiTester extends Activity {
  TextView mainText;
  WifiManager mainWifi;
  WifiReceiver receiverWifi;
  List<ScanResult> wifiList;
  StringBuilder sb = new StringBuilder();
 
  public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
   mainText = (TextView) findViewById(R.id.mainText);
   mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
   receiverWifi = new WifiReceiver();
   registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));    //Registri il receiver che verrà scatenato alla fine dello Scan
   mainWifi.startScan();
   mainText.setText("\nStarting Scan...\n");
  }

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

  protected void onResume() {
    registerReceiver(receiverWifi, new IntentFilter(
       WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
    super.onResume();
  }
 
  class WifiReceiver extends BroadcastReceiver {       //Receiver scatenato alla fine dello Scan
    public void onReceive(Context c, Intent intent) {
    sb = new StringBuilder();
    wifiList = mainWifi.getScanResults();
    for(int i = 0; i < wifiList.size(); i++){
      sb.append(new Integer(i+1).toString() + ".");
      sb.append((wifiList.get(i)).toString());
      sb.append("\n");
    }
    mainText.setText(sb);
    }
  }
}


Prova e fammi sapere..
Ciao..

 8-)

Offline ceklo

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +1
    • Mostra profilo
Re:Elencare le reti WiFi disponibili
« Risposta #2 il: 01 Novembre 2012, 17:09:18 CET »
0
Fantastico....

ancora una domanda, come arrestare il receiver ?
Non esiste un mainWifi.stopScan();   :-)  :-P  Una volta recuperati il dati compilo una List contenuta in un alertDialog, quindi devo arrestare la ricerca.

Grazie Salvatore

Saluti
ceklo

Offline salvatore.zagarella

  • Utente normale
  • ***
  • Post: 239
  • Respect: +2
    • Mostra profilo
    • Ieeng Solution
Re:Elencare le reti WiFi disponibili
« Risposta #3 il: 01 Novembre 2012, 17:13:57 CET »
0
Credo che la scansione termini da sola e fa scattare il broadcast..però non ne sono sicuro..
P.S. Ricorda di inserire i giusti permessi nel manifest sennòti scattano un po' d eccezioni..

Lo hai provato il codice? Dacci qualche feedback..

Offline ceklo

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +1
    • Mostra profilo
Re:Elencare le reti WiFi disponibili
« Risposta #4 il: 02 Novembre 2012, 09:28:37 CET »
0
Ciao e nuovamente grazie,

Si ho usato esattamente così come proposto senza modifica e funziona perfettamente. Ma per capire il funzionamento o aggiunto un Toast per capire il ciclo di vita.

Siccome il testo sulla editText rimane sempre fisso, al meno il Toast lo vedi "lampeggiare" così ho scoperto che fa cicli all'infinito....
Ora emerge la necessità di fermare una volta ottenuta l'informazione (al primo ciclo ?).

Grazie
Saluti
ceklo

Offline salvatore.zagarella

  • Utente normale
  • ***
  • Post: 239
  • Respect: +2
    • Mostra profilo
    • Ieeng Solution
Re:Elencare le reti WiFi disponibili
« Risposta #5 il: 02 Novembre 2012, 13:34:16 CET »
0
mmm..non saprei..
Vediamo se arriva qualche altro che ci ha avuto a che fare..
Mi spiace..

Offline lele71

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy S3, Asus TF300T
  • Sistema operativo:
    windows7, android (AIDE)
Re:Elencare le reti WiFi disponibili
« Risposta #6 il: 07 Gennaio 2013, 20:17:48 CET »
0
Salve a tutti. Mi collego a questo topic per chiedere un parere. Dunque ho utilizzato anche io la stessa procedura per scansionare le reti disponibili e mi succede una cosa strana:
sul tablet android 4.1.1 e su un galaxy S2  android 4.0 tutto funziona a dovere e dopo la prima scansione il tutto si ferma
sul galaxy s3  android 4.1.1 invece oltre a continuare la scansione all'infinito la lista che mi restituisce è priva delle prime due voci SSID e BSIID inizia con:
,capabilities ecc...

Qualcuno ha idea del perchè?