弦歌册 · 大学生校园事项助手
大学诸事,尽入一册。
把群聊通知、截图、课表和课堂录音里的零散信息,收束成一张能查看、会提醒、可回听的个人校园清单。
弦歌册是一款面向大学生的本地优先校园事项助手。它把课程、收件、谛听(课堂录音转写)、任务、考试、习惯、成绩、记账和桌面小部件放在同一个清晰的入口中,帮助从「看到通知」走到「完成事情」。
应用不需要注册账号也能完整使用,不含广告,也不强制云同步。课程与日常记录默认只保存在设备本机;AI 与离线识别都是可选增强,关掉或未安装时不影响基础课表和记录功能。
下载
方式一:GitHub Releases(推荐,有梯子)
方式二:国内网盘(无梯子,国内速度快)
- 夸克网盘:https://pan.quark.cn/s/92990ca1200b
- 百度网盘:https://pan.baidu.com/s/1tbVQ6AJAYNE5C4UjE_7jMw 提取码:
MCSe
手机扫码或打开链接,下载 APK 后覆盖安装即可。
- 应用包名:
win.iqwqi.xiangece - 当前版本:
0.0.1· versionCode2 - 最低 Android:API 26(Android 8.0),目标 SDK 37
- 架构:
arm64-v8a、armeabi-v7a
核心功能
底部导航共五个主页面:今日 · 厚积 · 课程 · 百宝 · 我的。收件和谛听作为跨页能力,分别从「我的」与「百宝」进入。
今日
教学周进度、当天课程与完成情况一目了然。
- 学期进度卡片与教学周计算。
- 当天课程汇总:共几节、剩余几节;「上课中 / 即将开始 / 已结束」状态实时显示,已结束的课程自动收起。
- 任务:按「未完成 / 已完成」分组展示,支持创建、编辑、勾选、删除与撤销;可设置截止时间与课程关联。
- 校园事件:近期活动一览,过期自动隐藏,可关联地点并生成考试倒计时。
- 全局搜索:输入关键词可在课程、任务、事件、习惯中跨类型查找。
课程
可切换教学周的七天课表,单双周、多课表与背景壁纸均支持。
- 七天周课表网格与按天查看;长按课程编辑,点击空白节次快捷加课。
- 教学周切换、多课表管理(可新建 / 重命名 / 切换)、单双周(奇偶周)设置。
- 课程详情:教室、教师、课程颜色;课表背景支持壁纸、透明度、列宽行高与节次自定义。
- 时间冲突提示;同一时段重复课程会在导入和编辑时高亮提醒。
- 课程提醒基于
AlarmManager+RTC_WAKEUP,按节次时间提前提醒;设备重启后由BootReceiver自动恢复。
课表导入
支持多种格式;导入完成前都会先生成可编辑的待确认草稿,确认后才写入课表。
- HTML 课表:教务页面或导出的 HTML 文件。
- PDF 课表:支持「表格版式」和「列表版式」两种解析模式;扫描件没有文字层时可改用图片识别。
- Excel / CSV 课表:电子表格导出的课表。
- 课表口令:以
XGC1-开头的字符串,便于在同学间传递结构化课表。 - 图片课表:使用已安装的中文离线 OCR(PaddleOCR + ONNX),或由用户主动配置的 AI 识别。
收件
把微信、QQ、浏览器或相册中的文字和图片通过系统分享菜单分享给弦歌册,集中留在收件中。
- 通知文字可整理成课程、任务、事件或备忘草稿。
- 图片可使用已安装的中文离线 OCR,也可使用主动配置的 AI 识别。
- 文字识别与图片识别都会先进入可编辑的确认草稿,确认后才写入日程或课程。
- 识别失败时尽量保留原始文字或图片,不会因解析失败而丢失信息。
- 收件记录可在「我的 → 收件记录」中重新打开、重试 OCR 或删除。
谛听:课堂录音与转写
从「百宝」进入。用于专业课记重点,也适合水课中及时捕捉提问与点名。
- 录音保存在本机,按约 8 秒分段记录;通过前台麦克风服务运行,系统通知栏会持续显示录音状态,可随时暂停或结束。
- 支持中文、英文和中英混合场景;可填写专业术语词表(如
Cache、Transformer、傅里叶变换)。 - 专业课模式:本地规则雷达识别「重点、考点、必考、定义、定理、important、exam」等表达,生成疑似重点标记。
- 水课模式:识别「有没有问题、有什么疑问、谁能回答、any questions」等表达,生成疑似提问标记并以静音带震动的高优先级通知提醒。
- 转写过程中可见分段文字;结束后可查看完整记录、点击任意分段或标记按时间回听原音、分享音频或文字、删除记录。
- 识别不确定时可以优先回听原音,不必完全依赖机器转写;录音期间戴耳机可继续刷视频或玩游戏,实际收音设备以录音界面和系统通知显示为准。
- 离线语音识别可选安装 Sherpa-onnx 中英双语模型;未安装时仍可录音并保存音频。
百宝:校园小工具
按需取用,统一入口:
- 谛听:课堂录音与转写(同上,独立 Activity 进入)。
- 成绩:GPA / 加权平均分。支持 4.0、4.3、5.0 与自定义分→绩点规则。
- 课程时间:节次时间编辑,修改后同步课程页左侧时间轴。
- 考试倒计时:自动识别事件标题中的「考试、期中、期末、补考、测验、考核」等关键词并倒计时。
- 计算器:普通计算、科学函数(sin/cos/tan/√/log/ln/x²/^/π/e)和常用单位换算(长度、面积、重量、温度、数据),带历史记录。
- 专注番茄:沉浸式番茄钟,独立 Activity 进入。
- 记账:生活费收支流水,独立 Activity 进入。
厚积:每日坚持
记录每天的坚持。
- 习惯与每日任务:可创建、编辑、删除;每日箴言自动展示。
- 连续天数与完成次数统计;首次启动内置 6 条箴言,可自定义增删。
- 年度打卡热力图:按天标记习惯完成度,可视化一年的积累。
我的:设置与管理
集中管理外观、资源、备份与隐私:
- 外观:6 套主题色、暗色模式、跟随系统主题切换。
- AI 设置:接口地址、模型、鉴权方式与 API 密钥;开启前可测试连通性。
- 我的资源:中文 / 英文离线语音识别、中文离线 OCR 的下载、导入与管理。
- 本地账号:可选的本机账号注册 / 登录 / 退出(账号信息只保存在本机,密码以 AES-GCM 加密)。
- 本地备份:导出 / 恢复
.xiangece文件。 - 收件记录:查看与管理收件箱,重试 OCR 或删除。
- 提醒诊断:通知权限、精确闹钟权限状态每 1.5 秒刷新以反映系统变更;一键跳转设置页并发送测试通知。
- 隐私说明:链接到本页面的隐私政策与版本信息。
桌面小部件
提供 3 种桌面小部件,可在桌面长按添加:
- 弦歌册 · 今日:查看今天的下一节课程与教室。
- 弦歌册 · 下一节:桌面角落快速查看下一节课(紧凑版)。
- 弦歌册 · 今日安排:查看今天接下来的三节课程(日程版)。
小部件在每次进入 onResume 时刷新;时区或时间被系统调整时也会触发更新。
离线资源
离线资源统一放在「我的 → 我的资源」中按需安装,不会强制打进 APK,未安装也不影响其他功能。
| 资源 | 基于 | 当前体积 |
|---|---|---|
| 中文 / 英文离线语音识别 | Sherpa-onnx Streaming Paraformer 中英双语(int8) | 约 237 MB |
| 中文离线 OCR | PaddleOCR PP-OCRv5 + ONNX Runtime + OpenCV 4.10 | 约 21 MB |
资源下载支持校验、断点续传和多源策略;网络受限时也可以导入对应 ZIP。资源大小以应用内显示为准。
未安装离线包时:
- 录音仍可正常进行并保存音频。
- 图片课表与收件图片可改用 AI 识别,或暂时不识别。
- 离线识别不需要付费 API,也不会因为没有配置云端服务而自动上传录音或图片。
AI 使用方式
AI 是可选增强,不是使用弦歌册的前提。
- AI 默认关闭。
- 只有你主动配置接口并开启对应功能时,应用才会调用指定服务。
- 图片识别:在选择 AI 识别时发送你明确选择的图片。
- 谛听 AI 整理:主要使用转写文字和必要的课堂上下文,不会默认上传原始音频。
- 草稿 AI 增强:将通知文字发送给指定接口整理(文字限制 2400 字以内,减少 token 消耗);未启用 AI 时仍会生成本地草稿。
- AI 结果只作为提示,重要内容应结合原音、原图或原文核对。
- API 密钥使用 Android Keystore + AES-GCM 加密保存,不写入日志、备份文件或源代码。
数据与隐私
弦歌册尊重并保护你的隐私。所有业务数据(课程、任务、事件、习惯、成绩、收件、谛听转写、设置)均以 Room 数据库存储在本机设备,不主动上传到弦歌册自建服务器。
- 应用不主动扫描相册,只读取你明确选择或分享的内容。
- 不读取通讯录、通话记录、短信、定位或其他应用的使用情况。
- 离线语音识别和离线 OCR 在设备本地处理。
- 只有在你主动配置并使用 AI 时,必要的文字、上下文或你选择的图片才会发送到你指定的第三方接口;发送前应用会提示数据将离开设备。
- Android 系统自动云备份已禁用(
allowBackup=false、fullBackupContent=false)。 - 卸载应用或清除应用数据会删除应用私有目录中的本地数据;已导出的
.xiangece备份文件由用户自行保管。 - 录音前请确认符合学校规定、授课教师要求及所在地法律。
隐私政策
更新及生效日期:2026 年 8 月 1 日
弦歌册(包名 win.iqwqi.xiangece,版本 0.0.1)是一款单人、本地优先的校园事项助手。本政策说明应用如何处理你的信息。
我们处理的信息
- 你主动输入或分享的通知文字、截图、课表图片。
- 你创建的课程、任务、校园事件、习惯、成绩、学期、节次与提醒设置。
- 你主动配置的 OpenAI 兼容接口地址、模型与 API 密钥。
- 课堂录音:保存在应用私有目录,按约 8 秒分段记录。
弦歌册不会主动扫描相册,不读取通讯录、通话记录、短信、位置或其他应用的使用情况。
本地处理
弦歌册以「本地优先」为原则。所有业务数据均以 Room 数据库存储在设备本地,不主动上传弦歌册自建服务器。图片会复制到应用私有目录,以避免分享临时链接失效;是否交给第三方 AI 识别完全由你决定。
Android 系统自动云备份已禁用。你可以主动导出 .xiangece 本地备份文件,备份包含收件图片副本、谛听转写与标记、习惯打卡记录,但不包含 API 密钥与谛听原始音频。
可选 AI
AI 增强默认关闭。启用后,每次发送前都会提示:将把当前 OCR 文字与必要的学期上下文发送到你配置的第三方接口,不发送原图;谛听 AI 整理默认也不传原始音频。数据如何被第三方处理取决于该接口提供者的政策。
API 密钥使用 Android Keystore 与 AES-GCM 加密保存,不写入日志、备份或源代码。
谛听与课堂录音
谛听只有在用户主动进入功能并点击「开始录音」后才会请求并使用麦克风。录音通过 Android 麦克风类型前台服务运行,系统通知栏会持续显示录音状态;可以随时暂停或结束。
课堂音频默认保存在应用私有目录,不会上传到弦歌册服务器。谛听优先使用设备系统本地识别;用户也可以主动下载免费的中文离线识别包,让约 8 秒分段在本机处理。当本机识别不可用时,只有在用户已启用 AI、配置转写接口并在本节课堂打开「系统实时转写」开关的情况下,才会按约 8 秒分段发送到用户指定的转写接口;未满足这些条件时只保存本地音频,不会自动联网。
删除课堂记录时,应用会尝试同时删除对应的本地音频;使用课堂录音前,请遵守学校、教师和所在地关于录音、隐私与个人信息处理的规定。
权限
- 通知权限:用于课程、任务、事件提醒;Android 13 及以上需主动授权,拒绝后其他功能仍可使用。
- 精确闹钟权限(Android 12+):用于准时触发课程和事项提醒;未授权时提醒可能延迟。
- 开机完成:设备重启后恢复已设置的提醒。
- 麦克风 / 前台服务(麦克风):仅用于谛听,点击「开始录音」时请求,不录音不使用。
- 图片选择:仅处理你明确选择或分享的图片,不主动扫描相册。
- 振动:提醒触发时短振动提示。
- 网络:仅用于你主动启用的 AI 接口、自动更新检查与打开本页面;未配置 AI 时核心课表和记录功能可离线使用。
- 安装包请求:应用更新时用于安装新版本 APK,不用于其他来源。
备份与导出
Android 自动云备份已被禁用。你可主动导出 .xiangece 备份并自行保管;备份不包含 API 密钥,也不包含谛听的原始音频文件。
数据删除
卸载弦歌册会删除其应用私有目录和本地数据库,也可在系统设置中清除应用数据。已导出的 .xiangece 文件由你自行管理。
儿童与未成年人
弦歌册面向大学校园场景,不以儿童为目标用户。未成年人应在监护人指导下使用第三方 AI 服务。
备份与恢复
在「我的 → 本地备份」中可以导出或恢复一个 .xiangece 文件。一份完整备份包含:
- 课表、学期、节次、课程和课程详情。
- 外观、提醒和其他个性化设置(备份时强制
aiEnabled=false并清空encryptedApiKey)。 - 任务、校园事件、习惯、打卡记录和成绩。
- 收件文字、图片副本和 OCR 记录。
- 谛听课堂记录、转写文字和重点 / 提问标记。
为控制备份体积:
- 谛听原始音频不进入备份(
audioDirectory/audioPath/audioBytes在备份时被清空)。 - AI API 密钥不进入备份。
- 需要保留录音原音时,请在谛听记录中单独分享或保存音频。
正常应用更新不会主动清除本机数据;进行重要更新前,建议先导出一份 .xiangece 备份并保存到安全位置。
自动更新
应用启动时会检查 GitHub Release 中的更新信息。发现新版本后会提示更新、下载 APK 并校验 SHA-256 完整性,再通过系统安装器安装;网络或服务暂时不可用时,不影响已有的本地课表和记录继续使用。
更新前可选「备份后更新」,先导出 .xiangece 再下载安装。
应用同时提供国内网盘下载备选通道:当 GitHub 下载较慢或不可达时,可在更新对话框中选择「浏览器打开网盘下载」,通过夸克网盘或百度网盘获取 APK。
更新资源统一发布在 GitHub Release,文件名固定:
update.json:版本号、下载地址、SHA-256、最低兼容版本、发布说明、网盘下载源列表。xiangece.apk:应用安装包。
技术栈
| 层 | 选型 |
|---|---|
| 语言 | Kotlin 2.4.10(kotlinx.serialization、kotlinx.coroutines) |
| UI | Jetpack Compose + Material 3(Material Icons Extended) |
| 依赖注入 | Hilt / Dagger 2.60.1 |
| 本地存储 | Room 2.8.4 + DataStore |
| 网络 | OkHttp 5 |
| PDF 解析 | PDFBox Android |
| 离线 OCR | PaddleOCR(PP-OCRv5)+ ONNX Runtime 1.27 + OpenCV 4.10 |
| 离线语音 | Sherpa-onnx 1.13.4(Streaming Paraformer 中英双语 int8) |
| 提醒 | AlarmManager + 前台 Service + BootReceiver |
| 安全 | Android Keystore + AES-GCM |
| 构建 | AGP 9.3.1、KSP、Gradle 配置缓存、R8 混淆 + 资源压缩 |
通知频道实际为 5 个:course_reminders、task_reminders、event_reminders、misc(低优先级测试)和 test_notifications_v2(高优先级测试,避免旧版被用户关闭后测试永远静默)。
项目结构
app/
├── libs/ # 本地 AAR:opencv、sherpa-onnx
├── schemas/ # Room 数据库迁移历史(1–9)
└── src/main/java/
└── win/iqwqi/xiangece/
├── MainActivity.kt # 入口、分享 intent、更新流程
├── XiangeceApplication.kt # @HiltAndroidApp
├── core/
│ ├── ai/ # AiCampusEnhancer(可选 AI 增强)
│ ├── backup/ # BackupManager(.xiangece 导入导出)
│ ├── importing/ # 课表导入:HTML / Excel / PDF / 口令
│ ├── ocr/ # OcrService + OfflineOcrService + OfflineOcrPack
│ ├── offline/ # OfflinePackArchive + ResumableHttpFileDownloader
│ ├── reminder/ # AlarmManager 提醒、BootReceiver、ReminderReceiver
│ ├── security/ # ApiKeyCipher(Keystore + AES-GCM)
│ └── update/ # AppUpdate(GitHub Release 检查 / 下载 / 安装)
├── data/ # Room(Dao / Entities / Converters)+ DataStore 设置
├── domain/ # 解析器、学期/教学周/冲突检测/绩点计算
├── feature/diting/ # 谛听:audio / data / domain / offline / transcription / ui
├── ui/
│ ├── components/ # 公共组件(PaperCard、AppSnackbar、AppFormSheet…)
│ ├── screens/ # 今日 / 课程 / 百宝 / 厚积 / 我的 / 收件 / 引导 / 草稿编辑
│ ├── theme/ # 6 套主题色 + 暗色模式
│ └── XiangeceApp.kt # 主框架、HorizontalPager、闪屏
└── widget/ # 3 种桌面小部件:今日 / 下一节 / 今日安排
docs/ # 隐私政策、谛听实现说明、更新发布说明等
offline-packs/ # 可选离线模型包(不进 APK)
首次启动时会进入引导页,要求填写学期名称、第一周周一日期与教学周数;填完即可开始使用。Android 13+ 会在引导完成后首次请求通知权限。
构建项目
.\gradlew.bat testDebugUnitTest
.\gradlew.bat assembleDebug
Release 构建需要在本机设置签名环境变量;真实签名文件、密码和 API 密钥不要提交到仓库:
$env:XIANGECE_STORE_FILE = "D:\secure\xiangece-release.jks"
$env:XIANGECE_STORE_PASSWORD = "本机环境变量"
$env:XIANGECE_KEY_ALIAS = "xiangece"
$env:XIANGECE_KEY_PASSWORD = "本机环境变量"
.\gradlew.bat assembleRelease
Release 构建已启用 R8 混淆和资源压缩(isMinifyEnabled=true、isShrinkResources=true)。发布前请同步检查:版本号、APK 签名、update.json 中的 SHA-256,以及 GitHub Release 中的 APK 文件。
为什么做它
大学里的重要信息经常散落在群聊、教务系统、截图和临时通知里。弦歌册不试图替代所有应用,而是把这些零散信息收束成一张能查看、能修改、能提醒、能回听的个人校园清单。
它没有强制账号体系、广告和云同步,适合先从自己的课表开始使用;如果愿意,也可以通过课表口令或备份文件与同学交换结构化课表。
使用语音转写、OCR 和 AI 都可能受到距离、噪声、口音、设备麦克风、网络和模型能力影响。谛听保留原始录音,就是为了在文字不准确时能够回听核对。
请合理控制录音时长和本地存储空间,也请尊重课堂中的录音规定及他人的隐私。
开源协议
弦歌册基于 GPL-3.0 协议开源。你可以自由使用、修改与学习源码;任何衍生作品须同样以 GPL-3.0 开源并保留版权声明。第三方组件和模型另见项目仓库中的 THIRD_PARTY_NOTICES.md 与 docs/ 说明文件。
联系方式
项目源码、问题反馈与隐私政策:
- GitHub:QwQBiG/XianGeCe
- 项目说明与最新文档:本页面 https://iqwqi.win/cs/posts/xiangece/
- Release 下载:GitHub Releases
版权所有 © 2026 弦歌册(iqwqi)· 本政策与说明可能随功能变化更新,重要变化会在应用或本网站中说明。