校园网助手:Android 校园网自动认证与双网检测
应用下载
安装包:CampusNet-1.3.0-DualNetwork.apk,约 70 KB。需要 Android 12 及以上系统,优先适配 Xiaomi 15 / Xiaomi HyperOS。当前认证接口针对本校校园网配置,其他学校需调整接口后使用。
一、项目概述
校园网助手是一款面向 Android 设备的轻量级校园网络管理应用,主要解决校园网需要频繁进行门户认证、跨教学楼后容易掉线、网络质量不稳定以及 Wi-Fi 与移动数据状态难以判断等问题。
应用根据学校现有的 Dr.COM/ePortal 登录接口完成认证,并通过 Android 系统网络回调实时感知 Wi-Fi 连接、IP 地址、默认网关及网络验证状态。当用户从一栋教学楼移动到另一栋教学楼,或设备重新连接校园 Wi-Fi 时,应用能够快速判断网络环境是否发生变化,并在需要时自动重新登录。
当前版本为 v1.3.0,优先适配 Xiaomi 15 与 Xiaomi HyperOS,同时兼容 Android 12 及以上系统。
二、项目背景
校园网络在实际使用中可能存在以下问题:
- 连接校园 Wi-Fi 后仍需手动打开认证页面登录。
- 从 A 教学楼移动到 B 教学楼时,设备虽然仍显示连接 Wi-Fi,但 IP、子网、网关或认证状态已经发生变化。
- 部分接入点信号弱、丢包率高,网页长时间无法打开。
- 用户无法直观比较校园 Wi-Fi 与移动数据的网络质量。
- 普通定时轮询工具耗电较高,并且可能频繁请求学校认证服务器。
本项目通过事件驱动的网络监听、低频健康检查和指数退避重试机制,在可靠回连与低功耗之间取得平衡。
三、主要功能
1. 校园网认证
- 根据指定的 ePortal GET 接口自动构造登录请求。
- 自动读取当前 Wi-Fi 的 IPv4 地址和默认网关。
- 支持手动立即登录和后台自动登录。
- 不在日志、通知或界面状态中输出账号密码及完整登录 URL。
2. 断联自动回连
- 监听 Wi-Fi 接入、断开和网络能力变化。
- 网络验证失效或出现认证门户时进行快速连通性检查。
- 认证失败后采用指数退避策略重试:从 5 秒开始,最长等待 5 分钟。
- 避免网络故障或密码错误时高频访问认证服务器。
3. 楼宇漫游优化
- 识别 Wi-Fi 网络对象重新建立。
- 检测 DHCP IPv4、子网、接口和默认网关变化。
- 跨教学楼或接入点切换后快速重新认证。
- 对系统暂时保留旧网络验证状态的情况设置短时强制认证窗口。
4. 双网检测与质量评估
- 同时显示 Wi-Fi 和移动数据的网络状态。
- 展示 IP 地址、网关、DNS、网络接口、计费状态、验证状态及链路能力。
- 按需临时唤起移动数据链路。
- Wi-Fi 与移动数据并行执行延迟和下载测试。
- 每条链路最多读取约 1 MB 测速数据,减少移动流量消耗。
- 根据连通性、延迟和下载速度计算质量分数并给出使用建议。
5. 网络测速
- 测量校园网门户访问延迟。
- 支持自定义 HTTPS 测速文件地址。
- 测速仅在用户主动点击后执行,不在后台消耗大量流量。
6. 隐身通知模式
- Android 13 及以上系统不主动申请普通通知权限。
- 前台服务记录不会出现在普通通知栏,只保留在系统运行管理入口。
- 通知没有点击跳转和操作按钮,避免误触打开应用。
- Android 12 按系统要求保留静默、低优先级且不可点击的前台服务通知。
7. 开机恢复
- 用户开启自动回连后,手机重启或应用更新完成时恢复网络守护。
- 用户关闭自动回连后不会自行启动服务。
四、技术架构
项目使用原生 Java 和 Android 平台 API 开发,不依赖第三方运行框架。
| 模块 | 主要职责 |
|---|---|
MainActivity |
设置界面、网络信息展示、测速操作和系统设置入口 |
ReconnectService |
前台网络守护、断联检测、漫游识别和自动重试 |
LoginClient |
构造并发送校园网认证请求、检查互联网连通性 |
NetworkInspector |
获取 Wi-Fi、移动数据、IP、网关、DNS 和链路能力 |
DualNetworkTester |
并行测试 Wi-Fi 与移动数据并计算质量评分 |
SpeedTest |
单网络延迟与下载速度测试 |
CredentialStore |
使用 Android Keystore 加密保存账号密码 |
BootReceiver |
手机重启或应用更新后的服务恢复 |
AppPrefs |
保存非敏感设置和运行状态 |
五、核心流程
1 | 连接校园 Wi-Fi |
六、低功耗设计
- 使用
ConnectivityManager.NetworkCallback接收网络变化事件,避免持续高频轮询。 - 默认仅按分钟级间隔进行轻量联网检查。
- 所有阻塞网络请求均在后台单线程中执行。
- 双网测速和移动链路请求仅由用户主动触发。
- 测试结束后立即释放移动网络请求。
- 无 Compose、WebView、数据库和第三方网络库,降低安装包和运行内存占用。
七、安全与隐私
本地凭据保护
账号和密码使用 Android Keystore 生成的 AES-GCM 密钥加密,SharedPreferences 中只保存密文和随机初始化向量。应用备份与设备迁移规则会排除所有私有数据,避免无法迁移的密文或敏感配置进入云备份。
网络安全限制
学校认证服务器使用 HTTP,因此账号密码在校园网络中的传输无法获得 TLS 加密保护。应用通过 Network Security Configuration 仅允许向 172.16.253.3 发起明文 HTTP 请求,其他地址默认禁止明文通信。
权限控制
应用仅使用以下必要权限:
INTERNET:访问校园认证服务器及测速地址。ACCESS_NETWORK_STATE:读取网络连接和验证状态。CHANGE_NETWORK_STATE:在用户执行双网测试时临时请求移动数据链路。FOREGROUND_SERVICE:维持用户明确开启的自动回连服务。FOREGROUND_SERVICE_SPECIAL_USE:声明持续校园网认证守护用途。RECEIVE_BOOT_COMPLETED:在用户已启用自动回连时恢复服务。
应用不申请定位、通讯录、短信、存储、电话状态或真实硬件 MAC 权限。
八、网络优化能力边界
Android 普通应用只能为自身的网络连接选择 Wi-Fi 或移动数据,不能直接替浏览器、微信等其他应用修改系统路由。因此,当前版本的双网功能用于并行检测、评分和推荐,不会宣称已经替全手机完成网络切换。
真正实现全手机 Wi-Fi 与移动数据自动分流,需要使用 Android VpnService。如果希望把同一个下载或连接的带宽进行叠加,还需要公网中继服务器负责重组流量。这种方案会带来 VPN 系统标识、服务器费用、额外延迟、移动流量消耗和更高的隐私责任,因此不包含在当前轻量版本中。
对于校园内个别网络质量较差的楼宇,应用提供小米 WLAN 设置入口。用户可以根据机型支持情况尝试开启:
1 | 设置 → WLAN → 网络加速 → 智能多网络加速 / 双 WLAN 加速 |
九、兼容性
- 最低系统:Android 12,API 31。
- 目标系统:Android 16,API 36。
- 优先测试机型:Xiaomi 15、Xiaomi HyperOS。
- 使用原生 Android API,能够兼容大部分 Android 12 及以上品牌设备。
- Android 17 设备可以兼容运行;项目暂不将目标版本提升至 API 37,以避免校园局域网访问额外要求运行时权限。
十、构建与运行
环境要求
- Android Studio
- JDK 17 或更高版本
- Android SDK 36
- Gradle Wrapper 已包含在项目中
构建步骤
- 使用 Android Studio 打开项目根目录。
- 等待 Gradle 同步完成。
- 选择
app配置并连接 Android 设备。 - 点击运行,或在命令行执行:
1 | ./gradlew assembleDebug |
Windows 环境可以执行:
1 | .\gradlew.bat assembleDebug |
生成的 APK 位于:
1 | app/build/outputs/apk/debug/app-debug.apk |
十一、使用方法
- 将手机连接到校园 Wi-Fi。
- 打开应用并填写完整校园网账号和密码。
- 开启“断联自动回连”并保存设置。
- 首次使用可点击“立即登录”确认认证接口正常。
- 网络较差时使用“双网并行测速并推荐”比较 Wi-Fi 和移动数据。
- 根据推荐结果手动切换网络,或进入 Xiaomi HyperOS 网络加速设置。
十二、后续规划
- 增加可导出的脱敏网络诊断报告。
- 记录不同教学楼或网关的历史网络质量。
- 根据连续丢包而不仅是单次请求判断网络状态。
- 支持用户配置多个校园认证地址。
- 增加可选的通知显示模式。
- 在具备可信公网中继服务器的前提下,评估 VPN 智能分流版本。
十三、项目总结
校园网助手以“小体积、低功耗、自动恢复、安全保存凭据”为设计目标,重点解决校园门户认证和跨楼宇漫游导致的断网问题。项目充分利用 Android 原生网络回调和多网络 API,在不获取高风险权限、不常驻高频轮询、不依赖第三方服务的前提下,为校园网络提供自动认证、状态诊断和双网质量评估能力。
