开热点这个功能,很多人每天都在用,但从 Android 系统开发者的角度看,一个“智能开启 5GHz 频段”的小细节,背后藏着硬件能力判断、无线法规约束、用户体验权衡、甚至还有 DFS 雷达共存这类偏门逻辑。我最早接触这个问题,是在做系统级 Wi-Fi 定制的时候,产品经理丢过来一个需求:默认热点要尽量走 5GHz,因为 2.4GHz 太拥挤、速度上不去。结果一深入才发现,这里的“尽量”二字,远比想象中复杂。
这篇文章我会从一个偏工程实现的角度,把 Android 热点开启 5GHz 的完整链路拆开看,包括系统是怎么判断该不该开 5GHz、代码层面怎么控制、用户界面上那些选项又是怎么来的,以及我在实际开发中遇到过哪些坑。适合正在做 Android 系统定制、Framework 开发、或者是对 Wi-Fi 协议感兴趣、想弄明白热点频段逻辑的朋友。
1. Android 热点为什么绕不开 5GHz
1.1 2.4GHz 的拥堵宿命
2.4GHz 频段其实是 Wi-Fi 最“历史悠久”的工作频段,覆盖范围广、穿墙能力强,但也正因为如此,它成了全世界的“公共停车场”。家用路由器、蓝牙、无线鼠标、甚至某些微波炉都在这个频段附近工作。2.4GHz 在多数国家只划分了 13 个信道(中国可用 1-13),其中真正互不重叠的只有 1、6、11 这 3 个信道。想象一下,一栋楼里几十个路由器同时工作,大家能选的干净信道就那么几个,互相干扰是必然的。
而 5GHz 频段就宽裕太多了,从 5150MHz 到 5850MHz,可用的非重叠信道有 20 多个,还支持更高的调制方式和更大的频宽。在同样条件下,5GHz 能跑出比 2.4GHz 高出一大截的吞吐量。对于开热点共享网络、局域网传文件、手机投屏这些场景,5GHz 带来的体验差异是肉眼可见的。
1.2 5GHz 热点的现实价值
手机开热点,本质上就是把手机变成一台软件接入点(SoftAP)。2.4GHz 热点虽然兼容性好,但稳定性和速率都不尽如人意。尤其是在几个人一起连热点打游戏、看视频的场景下,2.4GHz 很容易因为干扰导致延迟抖动。
5GHz 热点就不一样了,信道干净、频宽大、时延低。如果手机硬件支持并且客户端也支持 5GHz,连接体验会明显好一截。我实测过用同一台手机开热点,2.4GHz 下局域网传输文件大概只有 30-40MB/s 的速率,切到 5GHz 后能到 70-80MB/s,翻了一倍还多。对于临时共享、多人联机这些场景,这差距非常值得在系统层面做优化。
1.3 “智能开启”要回答的三个问题
既然 5GHz 这么好,那直接把热点固定成 5GHz 不就行了?实际操作中显然不行,因为“智能开启”本质上要想清楚三件事:
- 当前硬件到底支不支持 5GHz 的 SoftAP 模式。有些平板、低端手机,Wi-Fi 芯片只支持 2.4GHz,这种情况下就算系统再想开 5GHz 也白搭。
- 当前无线环境适不适合用 5GHz。5GHz 频段有一个特殊机制叫 DFS(动态频率选择),部分信道需要先侦听雷达信号,如果侦测到雷达,系统必须立刻让出信道。热点如果跑在这些信道上,会存在不稳定甚至中断的风险。
- 目标客户端能不能连上 5GHz。很多 IoT 设备、老款手机只支持 2.4GHz,如果热点一刀切开成 5GHz,它们会直接“消失”,用户会以为热点坏了。
搞清楚这三点,才能真正理解 Android 系统里那些看似“玄学”的频段选择逻辑。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 智能选频的判断逻辑与代码拆解
2.1 系统入口:SoftApManager 与 SoftApConfiguration
在 Android Framework 里,热点功能的核心实现在 WifiServiceImpl 和 SoftApManager 这层。从 Android 9 开始,系统用 SoftApConfiguration 来描述热点的配置,它里面有一个关键的字段 Band,决定了热点跑在哪个频段。
先看一段典型的配置代码,用 Kotlin 写大概是这样的:
kotlin复制val config = SoftApConfiguration.Builder()
.setSsid("MyHotspot")
.setPassphrase("password123", SoftApConfiguration.SECURITY_TYPE_WPA2_PSK)
.setBand(SoftA
