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之间。
这里写图片描述
在文章结尾处,将提供源码。

2.通过adb的方式

首先,执行

adb shell

然后,执行

wpa_cli ifname=wlan0 scan_results

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

源代码

参考文章

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值