2013-06-27 9 views
5

Ho bisogno di scansionare i segnali Wi-Fi disponibili e i loro punti di forza. Sto usando wifiManager.startScan(); e asincrono wifiManager.getScanResult();.Scansione per segnali wifi solo nella banda 2,4 Ghz

Su dispositivi senza supporto della banda 5 GHz ci vogliono circa 500ms per ottenere i risultati, su dispositivi con supporto banda 5GHz ci vogliono circa 2 secondi, e questo è troppo per me. Immagino che il ritardo di 1,5 s sia nella ricerca dell'intera banda a 5 GHz.

C'è un modo in cui posso dire al dispositivo di scansionare solo nella banda a 2,4 GHz, o in qualsiasi altro modo in cui posso ottenere i risultati più velocemente (ad esempio tramite NDK)? Ho cercato attraverso l'intero web e non ho trovato nulla, quindi immagino che questo sia l'unico modo.

Grazie.

risposta

1

C'è un modo ho potuto dire al dispositivo per la scansione solo nel 2,4 GHz banda

Penso che non ci sia modo come raggiungerlo.

Tutto ciò che puoi fare è solo chiamare startScan() e attendere i risultati. Quindi è possibile filtrare i risultati a causa della loro frequenza, in particolare per la frequenza di 2,4 GHz di ciascun punto di accesso (punto di accesso) dovrebbe essere muggito a 2500 Mhz.

+0

per 5 Ghz sto ottenendo il valore di frequenza al di sotto 2500. –

0

Il file di configurazione del supplicant fornisce l'opzione per dichiarare esplicitamente l'intervallo di canali in cui si desidera eseguire la scansione della rete disponibile. Se il dispositivo utilizza wpa_supplicant, nel file di configurazione è possibile definire la frequenza di scansione come di seguito.

scan_freq: Lista di frequenze per la scansione di

per ulteriori informazioni cercare per il testo sopra in collegamento menzione qui sotto.

Visita http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/wpa_supplicant.conf.

2
/** 
* Auto settings in the driver. The driver could choose to operate on both 
* 2.4 GHz and 5 GHz or make a dynamic decision on selecting the band. 
* @hide 
*/ 
public static final int WIFI_FREQUENCY_BAND_AUTO = 0; 

/** 
* Operation on 5 GHz alone 
* @hide 
*/ 
public static final int WIFI_FREQUENCY_BAND_5GHZ = 1; 

/** 
* Operation on 2.4 GHz alone 
* @hide 
*/ 
public static final int WIFI_FREQUENCY_BAND_2GHZ = 2; 

Utilizzare le costanti sopra la parte di WifiManager.java, per impostare le bande di frequenza richieste. E possiamo impostare la frequenza con API setFrequencyBand (modalità int, boolean persist). Queste sono API nascoste.

frammento di codice:

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

// To scan only 2.4 GHz Frequency band 

// true, if this needs to be remembered 

wm.setFrequencyBand(2, false); 

// Start scan. 

wm.startScan(); 

// To get the frequency band used. 

int band = wm.getFrequncyBand(); 
+0

Questo sarebbe perfetto, tranne che queste funzioni sono nascoste e non è possibile fare riferimento. – enl8enmentnow

Problemi correlati