我需要扫描可用的Wi-Fi信号及其优势。我正在使用wifiManager.startScan();
和异步wifiManager.getScanResult();
。
在不支持5GHz频段的设备上,需要大约500ms才能获得结果,在支持5GHz频段的设备上需要大约2s,这对我来说太过分了。我想1.5s延迟是在搜索整个5GHz频段。
有什么方法可以告诉设备只能在2.4GHz频段扫描,或者我可以更快地获得结果的其他任何方式(例如通过NDK)?我在整个网络上搜索并没有发现任何内容,所以我猜这是唯一的方法。
谢谢。
答案 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:要扫描的频率列表
了解更多信息,请在下面的提及链接中查找以上文字。
答案 3 :(得分:0)
final WifiManager wifiManager = (WifiManager)
context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiManager.getScanResults().get(0).frequency >= 2500