非官方声明:本项目非石河子大学官方软件,由在校学生利用课余时间出于学习目的独立开发维护,与学校官方及教务部门无任何关联。
石河子大学课表安卓应用:自动登录学校统一身份认证(CAS),抓取教务系统整学期课表,本地离线渲染,支持课前提醒、深浅主题与自定义背景。
| 渠道 | 地址 | 说明 |
|---|---|---|
| Gitee(国内直连) | https://gitee.com/m1sucode/shzu-schedule/releases | 推荐国内用户使用,无需代理,下载速度快 |
| GitHub | https://github.com/DoGeMisu/shzu-schedule/releases | 海外或可正常访问 GitHub 的用户 |
两处源码与版本完全同步,功能一致。若 Gitee 打不开,请改用 GitHub,反之亦然。
- 🐛 修复切应用回来闪白:在澎湃 OS 等机型上切屏或切到其他应用再切回来时界面闪动、深色主题下先闪一下白的问题已修复(背景图改异步解码 + 避免无谓重绘 + 窗口底色跟随主题)
- 🐛 修复小组件课程位置:在课表里拖动调整过位置的课程,桌面小组件现在会同步显示到新位置,不再停留在原始位置
- 🐛 修复自定义背景下的课程详情弹窗:使用自定义背景图时,弹窗弹出动画结束后会跳成不透明纯白,现正确保持半透明毛玻璃
- 🐛 修复弹窗闪烁:打开课程详情时页面「先暗一下再亮」、关闭时「缩小后又闪一下」
- 🐛 修复点击高亮:点卡片和按钮时出现的蓝色背景块已去除
- 🪟 桌面小组件(全新):主屏直接显示接下来的课程,按时间先后排序,可同时列出多节;课程名用课程配色,下方标注地点与时间
- 🎨 小组件玻璃拟态:半透明磨砂玻璃背景,圆角与系统组件一致,不遮挡壁纸
- 🌗 小组件深浅主题:自带浅色 / 深色两套配色,随小组件尺寸自动适配,也可点卡片上的切换按钮手动换
- 📐 多尺寸适配:支持 1×2 / 1×3 / 2×2 等桌面网格,行数随组件高度自动增减
- 🐛 修复弹窗闪烁:打开课程详情时页面「先暗一下再亮」、关闭时「缩小后又闪一下」的问题已修复
- 🐛 修复点击高亮:点卡片和按钮时出现的蓝色背景块已去除
- 🛡 权限体检清单:设置页一眼看出缺哪项权限(悬浮窗 / 通知 / 后台运行 / 自启动),点任一项直接跳转去开
- 📱 机型专属指引:按小米红米、华为荣耀、OPPO/realme/一加、vivo/iQOO、魅族、三星分别给出具体设置路径
- ⚡ 小米/红米专项:一键直达「后台弹出界面」权限页(这项不开,提醒弹不出来,只会发通知)
- 🔔 新增通知权限检测与一键申请,未开启时明确提示会降级为通知提醒
- 🔔 课前提醒全面重做:课程卡片右上角铃铛一键开关,到点用悬浮窗弹提醒页面,来电式循环响铃 + 震动,退出应用、锁屏也照常提醒
- 📅 整学期课表:一次拉取全学期并本地保存,总周数从教务教学周历自动获取(不再写死),无需再按窗口反复刷新
- 🎨 外观可定制:深色 / 浅色主题一键切换(带过渡动画),支持从相册选图当课表背景,卡片自动半透明
- 🔒 安全加固:密码改用系统密钥库加密存储,网络请求限校内域名白名单,禁止明文流量与外部跳转
- 🧩 细节优化:重叠课程(同一时段多门课)详情完整展示、空课周提示、切周不再闪屏、卡片放大展开动画
- 自动登录:学号密码一次保存,CAS 统一认证自动续期,Cookie 持久化免频繁登录
- MFA 兼容:CAS 触发短信二次验证时自动停留验证页,手动验证后流程无缝继续
- 整学期课表:一次抓取全学期数据本地保存,按周快速过滤渲染
- 周次自动识别:从教务教学周历接口获取第 1 周周一日期与学期总周数,拒绝硬编码
- 节次时间动态提取:作息时间表(如 1-2 节 10:00-11:40)从教务页面实时提取
- 课程详情:点击卡片放大展开,重叠课程(同一格多门课)逐门完整展示
- 拖动调位置:长按 700ms(含震动反馈)进入拖动模式,松手后可撤销/应用,随时一键重置布局
- 交互体验:滑动切周、同课同色、今日高亮、空课周提示、开屏动画
- 一键开关:卡片右上角铃铛,灰=关、金=开,无需进入子页面
- 自建定时器:前台服务内置计时,不依赖系统闹钟,Android 12+ 无需精确闹钟权限
- 悬浮窗提醒:到点弹出提醒页面,盖在桌面、微信、浏览器之上(白色毛玻璃卡片)
- 来电式响铃:循环播放系统来电铃声 + 循环震动,点“知道了”停止(60 秒自动静音)
- 通知兜底:未授予悬浮窗权限时自动降级为高优先级通知,提醒不会丢
- 过期保护:今日以前的提醒、以及错过 10 分钟以上的提醒一律不补弹
- 状态可视:常驻通知栏显示“下次提醒:x月x日 xx:xx 课程名”
- 权限引导:悬浮窗 / 自启动 / 后台运行三项一键跳转系统设置
- 深色 / 浅色主题切换,全局 0.35s 过渡
- 自定义图片背景(相册选取),课程卡片、星期栏、按钮自动半透明,网格无白底
- 自适应图标 + Android 13 主题图标(Monochrome)适配
- 接下来的课程:主屏直接显示按时间先后排序的后续课程,一门一行
- 课程配色:每行课程名使用与课表一致的课程颜色,左侧有同色标记条
- 地点与时间:课程名下方标注「地点 · 时间段」,今天 / 明天用相对日期
- 玻璃拟态:半透明磨砂背景 + 细描边,圆角 22dp,不遮挡壁纸
- 深浅自适应:浅色 / 深色两套配色,按小组件尺寸自动选择,也可点顶部 ◐ 按钮手动切换
- 多尺寸:支持 1×2 / 1×3 / 2×2 等网格,高度越大显示行数越多(最多 4 行)
⚠️ 注意:部分国产 ROM(如 ColorOS / 澎湃 OS)会屏蔽第三方应用的小组件, 小组件中心可能不显示「石大课表」。这是系统限制,非应用问题。
┌────────────────── Java 层(原生逻辑)──────────────────┐
│ MainActivity CAS登录 / 状态机 / 抓取调度 / HTML生成 │
│ ScheduleStore 课表数据存取(内存缓存)/ 周次计算 │
│ reminder/ 提醒前台服务 · 悬浮窗 · 权限 · 开机自启 │
│ NextCourse 下一节课计算(排序 / 配色 / 周次过滤) │
│ widget/ 桌面小组件 RemoteViews 渲染 │
│ util/ 密码加密(Keystore) · 权限跳转 │
└────────────────────────┬───────────────────────────────┘
│ addJavascriptInterface ↔ evaluateJavascript
┌────────────────────────▼───────────────────────────────┐
│ WebView 层(学校页面 + 自绘界面) │
│ · CAS/教务页面:注入 JS 自动化操作(登录、DOM 解析课表) │
│ · 课表展示页:Java 拼接 HTML/CSS/JS 渲染 + 交互动画 │
└─────────────────────────────────────────────────────────┘
- 语言:Java(零 Kotlin)
- 界面:WebView + HTML/CSS/JS(课表、弹窗、动画全部为网页实现)
- 兼容:Android 7.0+(minSdk 24),适配 Android 12+ 系统 SplashScreen
- 登录链路:访问教务系统 → 无会话则 302 到 CAS → 注入 JS 自动填表登录 →(如触发短信验证则等待用户手动完成)→ 凭据在到达教务系统后才落盘
- 课表入口探测:教务首页扫描链接(href 特征 xskb/kbcx → 文字特征“课表”)→ 空结果复扫 → 超时转入预设 URL 猜测,多层兜底
- DOM 解析:金智教务课表表格按
th(节次+时间)/td(7 列课程)结构提取,font[title]属性区分教师/教室/周次/班级/备注等字段,支持同格多课程拆分 - 周次推导:教学周历接口获取第 1 周周一日期与学期覆盖范围 → 推算总周数 →
weekMatches()解析“3-16(周)”“单双周”等表达式 - 提醒调度:已选课程的每节课 × 每个上课周次算出提醒时刻表 → 前台服务每秒心跳比对 → 到点弹悬浮窗并响铃
环境要求:JDK 21、Android SDK(compileSdk 34,需含 platforms/android-34 与 build-tools/34.0.0)、Gradle 8.4 + AGP 8.3.2
# 国内推荐(Gitee,直连)
git clone https://gitee.com/m1sucode/shzu-schedule.git
# 或 GitHub
git clone https://github.com/DoGeMisu/shzu-schedule.git
cd shzu-schedule
gradle assembleDebug
# 产物: app/build/outputs/apk/debug/app-debug.apk首次构建必须自行配置 SDK 路径:在项目根目录新建
local.properties,写入本机 Android SDK 的绝对路径(该文件不入库,每个人的路径都不同):sdk.dir=C\:\\Android\\Sdk注意 Windows 路径需按 Java Properties 规则转义(
\写成\\,冒号写成\:)。 也可以用环境变量ANDROID_HOME代替,或在 Android Studio 中打开项目,IDE 会自动生成该文件。若报
Failed to apply plugin 'com.android.internal.application',通常是 SDK 路径不对或缺少platforms/android-34、build-tools/34.0.0,用 SDK Manager 补齐即可。
- 密码加密存储:学号密码使用 Android Keystore(AES-256-GCM)加密后落盘,密钥不出安全硬件;旧版明文凭据打开应用时自动迁移
- 网络白名单:仅允许访问
*.shzu.edu.cn,其余跳转一律拦截 - 证书校验:SSL 错误只对校内域名放行,其余直接拒绝(防中间人)
- 禁明文流量:默认策略禁止 HTTP 明文,仅校内域名放宽
- 不参与备份:
allowBackup=false,应用数据无法被备份导出 - 无第三方服务器:课表与凭据不经过任何第三方,本项目不含任何硬编码凭据
| 权限 | 用途 |
|---|---|
| 网络 / 网络状态 | 访问学校教务系统 |
| 通知 | 提醒与提醒服务常驻状态 |
| 悬浮窗 | 到点把提醒页面弹在任意界面之上(可关闭,关闭后降级为通知提醒) |
| 前台服务 | 应用内自建提醒定时器常驻 |
| 开机自启 | 重启手机后自动恢复提醒 |
| 震动 / 音频设置 | 响铃与震动提醒 |
- 本项目为非官方的学生业余作品,与石河子大学及其教务部门无任何关联
- 由在校学生在业余时间独立开发,仅供学习交流
- 请合理使用,遵守学校相关规定
- 使用本项目产生的一切后果由使用者自行承担