7

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

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

有什么方法可以告诉设备仅在 2.4GHz 频段进行扫描,或者有什么其他方法可以更快地获得结果(例如通过 NDK)?我搜索了整个网络,一无所获,所以我想这是唯一的方法。

谢谢你。

4

4 回答 4

2

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

/**
 * 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();
于 2014-11-20T10:57:57.903 回答
2

有什么方法可以告诉设备仅在 2.4GHz 频段进行扫描

我认为没有办法实现它。

您所能做的就是打电话startScan()并等待结果。然后,您可以根据频率过滤结果,尤其是每个 AP(接入点)的 2.4Ghz 频率应低于 2500 Mhz。

于 2013-09-03T07:10:07.740 回答
1

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

scan_freq:要扫描的频率列表

有关更多信息,请在下面提到的链接中查找上述文本。

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

于 2013-10-04T05:51:07.200 回答
0
    final WifiManager wifiManager = (WifiManager)



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

wifiManager.getScanResults().get(0).frequency >= 2500
于 2018-11-08T15:11:40.653 回答