Android 判断wifi是2.4GHz还是5GHz

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之间。
Android 判断wifi是2.4GHz还是5GHz_第1张图片
在文章结尾处,将提供源码。

2.通过adb的方式

首先,执行

adb shell

然后,执行

wpa_cli ifname=wlan0 scan_results

即可获取到wifi的热点列表,注:执行这条命令需要root的你的机器。
Android 判断wifi是2.4GHz还是5GHz_第2张图片
通过第二列的频率数据,即可判断该wifi是2.4G还是5G。

源代码

参考文章

Android Wi-Fi子系统学习笔记
[AndroidTips]用wpa_cli 连接无线网络

你可能感兴趣的:(android,wifi)