仅在2.4Ghz频段扫描wifi信号

时间:2013-06-27 14:23:41

标签: android wifi wifimanager

我需要扫描可用的Wi-Fi信号及其优势。我正在使用wifiManager.startScan();和异步wifiManager.getScanResult();

在不支持5GHz频段的设备上,需要大约500ms才能获得结果,在支持5GHz频段的设备上需要大约2s,这对我来说太过分了。我想1.5s延迟是在搜索整个5GHz频段。

有什么方法可以告诉设备只能在2.4GHz频段扫描,或者我可以更快地获得结果的其他任何方式(例如通过NDK)?我在整个网络上搜索并没有发现任何内容,所以我猜这是唯一的方法。

谢谢。

4 个答案:

答案 0 :(得分:1)

  

有什么方法可以告诉设备只能在2.4GHz扫描   带

我认为没有办法实现它。

您所能做的只是致电startScan()并等待结果。然后你可以根据它们的频率过滤结果,特别是每个AP(接入点)的2.4Ghz频率应该低于2500 Mhz。

答案 1 :(得分:1)

注意:这些api已从Android Nogut版本中删除。适用于Mashmallow

/**
 * 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();

答案 2 :(得分:0)

请求者配置文件提供了显式声明要扫描可用网络的通道范围的选项。如果您的设备使用wpa_supplicant,那么在配置文件中您可以定义扫描频率,如下所示。

  

scan_freq:要扫描的频率列表

了解更多信息,请在下面的提及链接中查找以上文字。

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

答案 3 :(得分:0)

    final WifiManager wifiManager = (WifiManager)



context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);                

wifiManager.getScanResults().get(0).frequency >= 2500