2013-06-27 2 views
5

Ich muss für verfügbare Wi-Fi-Signale und ihre Stärken suchen. Ich verwende wifiManager.startScan(); und asynchron wifiManager.getScanResult();.Scannen nach WiFi-Signalen nur im 2,4 GHz-Band

Bei Geräten ohne Unterstützung des 5GHz-Bandes dauert es etwa 500ms, um die Ergebnisse zu erhalten, bei Geräten mit 5GHz-Band-Unterstützung dauert es etwa 2s, und das ist zu viel für mich. Ich denke, die Verzögerung von 1,5 Sekunden ist bei der Suche im gesamten 5 GHz-Band.

Gibt es eine Möglichkeit, das Gerät nur im 2,4-GHz-Band zu scannen, oder auf andere Weise, die Ergebnisse schneller zu erhalten (zum Beispiel durch NDK)? Ich habe das gesamte Internet durchsucht und nichts gefunden, also denke ich, dass dies der einzige Weg ist.

Vielen Dank.

Antwort

1

Gibt es eine Möglichkeit, das Gerät sagen könnte, nur im 2,4-GHz-Band

Ich denke, es ist nicht Art und Weise abzutasten, wie es zu erreichen.

Alles, was Sie tun können, ist nur startScan() anrufen und auf Ergebnisse warten. Dann können Sie die Ergebnisse aufgrund ihrer Frequenz filtern, besonders für 2,4 GHz Frequenz jedes AP (Access Point) sollte unter 2500 MHz sein.

+0

für 5 Ghz ich den Frequenzwert unter 2500. bekommen –

0

Die Supplicant-Konfigurationsdatei bietet die Option, den Bereich der Kanäle, in denen nach verfügbaren Netzwerken gesucht werden soll, explizit zu deklarieren. Wenn Ihr Gerät wpa_supplicant verwendet, dann können Sie in der Konfigurationsdatei die Scanfrequenz wie folgt definieren.

scan_freq: Liste der Frequenzen

für weitere Informationen suchen Sie nach oben Text in unten erwähnt Link zu scannen.

Besuchen Sie 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; 

Verwenden Sie die obigen Konstanten Teil von WifiManager.java, um die erforderlichen Frequenzbänder einzustellen. Und wir können die Frequenz mit API setFrequencyBand setzen (int mode, boolean persist). Dies sind versteckte APIs.

Code-Schnipsel:

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

Dies würde außer perfekt sein, dass diese Funktionen versteckt sind und nicht referenziert werden können. – enl8enmentnow