WiFi目前提供有2.4G和5G两个频段,它们的协议分别为802.11 b/g/n和802.11 a/ac。频率越低,穿墙越好。频率越高,速度越快。目前2.4G用的人比较多,再加上CMCC的WIFI信号,干扰比较严重!5G目前比较少,基本无干扰。2.4GWiFi即 2.4Ghz~2.5GHz的无线频率。标准带宽为20MHz,扩展带宽为40MHz。5G WiFi即4.9GHz~5.9GHz的无线频率。 带宽能提高到40MHz甚至80MHz或更高,传输速度最高提升到了1Gbps,每秒可以传输约125MB的内容。我们在实际应用开发过程中要怎样才能判断wifi是2.4G还是5G呢,下面通过两种方式来获取wifi是什么频段的。
1.通过代码的方式
通过WifiManager的getScanResults方法获取扫描到的wifi列表信息ScanResult,然后通过ScanResult获取每个wifi热点的信息,这里我们需要获取它的频率来判断它是2.4G还是5G的wifi热点。
/**
* 判断wifi是否为2.4G
* @param freq
* @return
*/
public static boolean is24GHz(int freq) {
return freq > 2400 && freq < 2500;
}
/**
* 判断wifi是否为5G
* @param freq
* @return
*/
public static boolean is5GHz(int freq) {
return freq > 4900 && freq < 5900;
}
通过上面的方法,我们只要需要把WiFi的频率值传入参数即可判断该WiFi是2.4G还是5G的热点。怎么获取频率值?ScanResult的frequency值就是其频率值。上面的方法参考自./frameworks/base/wifi/java/android/net/wifi/ScanResult.java。通过上面的代码我们也可以看出,2.4G的频率在2400到2500之间,5G的频率在4900到5900之间。
在文章结尾处,将提供源码。
2.通过adb的方式
首先,执行
adb shell
然后,执行
wpa_cli ifname=wlan0 scan_results
即可获取到wifi的热点列表,注:执行这条命令需要root的你的机器。
通过第二列的频率数据,即可判断该wifi是2.4G还是5G。