2013-06-27 40 views
5

我需要掃描可用的Wi-Fi信號及其優勢。我正在使用wifiManager.startScan();和異步wifiManager.getScanResult();僅在2.4Ghz頻段掃描wifi信號

在沒有支持5GHz頻段的設備上,需要大約500ms才能獲得結果,對於支持5GHz頻段的設備需要大約2s,這對我來說太過分了。我想1.5秒延遲是在搜索整個5GHz頻段。

有沒有什麼辦法可以告訴設備只能在2.4GHz頻段掃描,或者我可以通過其他方式更快地獲得結果(例如通過NDK)?我搜遍了整個網絡,什麼都沒找到,所以我想這是唯一的方法。

謝謝。

回答

1

有什麼辦法,我可以告訴設備掃描僅在2.4GHz頻段

我覺得沒有辦法如何去實現它。

只需撥打startScan()並等待結果即可。然後你可以過濾結果由於他們的頻率,尤其是每個AP(接入點)的2.4Ghz頻率應低於2500 Mhz。

+0

5 GHz的我得到以下2500 –

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; 

使用WifiManager.java的常量部分,設置所需的頻段。 我們可以用API setFrequencyBand(int mode,boolean persist)設置頻率。 這些是隱藏的API。

代碼片段:

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

頻率值。這將是完美的,除了這些功能是隱藏的,不能被引用。 – enl8enmentnow