2013-06-27 12 views
5

Muszę skanować pod kątem dostępnych sygnałów Wi-Fi i ich mocnych stron. Używam wifiManager.startScan(); i asynchronicznego wifiManager.getScanResult();.Skanowanie w poszukiwaniu sygnałów Wi-Fi tylko w paśmie 2,4 Ghz

Na urządzeniach bez wsparcia pasma 5 GHz, aby uzyskać wyniki, potrzeba około 500ms, na urządzeniach z obsługą pasma 5 GHz zajmuje to około 2 s, a to dla mnie za dużo. Przypuszczam, że opóźnienie 1,5 sekundy polega na wyszukiwaniu całego pasma 5 GHz.

Czy jest jakiś sposób, w jaki mogę stwierdzić, aby urządzenie skanowało tylko w paśmie 2,4 GHz lub w jakikolwiek inny sposób, w jaki mogłem uzyskać wyniki szybciej (na przykład poprzez NDK)? Przeszukałem całą sieć i nic nie znalazłem, więc domyślam się, że to jedyny sposób.

Dziękuję.

Odpowiedz

1

Czy jest jakiś sposób mogę powiedzieć urządzenie do skanowania tylko w paśmie 2,4 GHz

myślę, że nie ma sposobu, jak go osiągnąć.

Wszystko, co możesz zrobić, to zadzwonić pod numer startScan() i poczekać na wyniki. Następnie możesz filtrować wyniki ze względu na ich częstotliwość, szczególnie dla częstotliwości 2,4 Ghz każdego AP (punktu dostępowego) powinna być poniżej 2500 Mhz.

+0

na 5 Ghz otrzymuję wartość częstotliwości poniżej 2500. –

0

Plik konfiguracyjny dostawcy udostępnia opcję jawnego zadeklarowania zakresu kanałów, w których mają być skanowane dostępne sieci. Jeśli używasz urządzenia wpa_supplicant, to w pliku konfiguracyjnym możesz zdefiniować częstotliwość skanowania, jak poniżej.

scan_freq: Lista częstotliwości do skanowania

uzyskać więcej informacji szukać powyższego tekstu w linku poniżej wzmiankę.

Odwiedź 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; 

Użyj powyższej stałej części WifiManager.java, aby ustawić wymagane pasma częstotliwości. I możemy ustawić częstotliwość przy pomocy API setFrequencyBand (tryb int, boolean persist). To są ukryte interfejsy API.

fragment kodu:

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

to byłoby idealne, z wyjątkiem, że te funkcje są ukryte i nie można się odwoływać. – enl8enmentnow

Powiązane problemy