弦歌册 · 大学生校园事项助手

大学诸事,尽入一册。

把群聊通知、截图、课表和课堂录音里的零散信息,收束成一张能查看、会提醒、可回听的个人校园清单。

弦歌册是一款面向大学生的本地优先校园事项助手。它把课程、收件、谛听(课堂录音转写)、任务、考试、习惯、成绩、记账和桌面小部件放在同一个清晰的入口中,帮助从「看到通知」走到「完成事情」。

应用不需要注册账号也能完整使用,不含广告,也不强制云同步。课程与日常记录默认只保存在设备本机;AI 与离线识别都是可选增强,关掉或未安装时不影响基础课表和记录功能。


下载

方式一:GitHub Releases(推荐,有梯子)

方式二:国内网盘(无梯子,国内速度快)

手机扫码或打开链接,下载 APK 后覆盖安装即可。

  • 应用包名:win.iqwqi.xiangece
  • 当前版本:0.0.1 · versionCode 2
  • 最低 Android:API 26(Android 8.0),目标 SDK 37
  • 架构:arm64-v8aarmeabi-v7a

核心功能

底部导航共五个主页面:今日 · 厚积 · 课程 · 百宝 · 我的。收件和谛听作为跨页能力,分别从「我的」与「百宝」进入。

今日

教学周进度、当天课程与完成情况一目了然。

  • 学期进度卡片与教学周计算。
  • 当天课程汇总:共几节、剩余几节;「上课中 / 即将开始 / 已结束」状态实时显示,已结束的课程自动收起。
  • 任务:按「未完成 / 已完成」分组展示,支持创建、编辑、勾选、删除与撤销;可设置截止时间与课程关联。
  • 校园事件:近期活动一览,过期自动隐藏,可关联地点并生成考试倒计时。
  • 全局搜索:输入关键词可在课程、任务、事件、习惯中跨类型查找。

课程

可切换教学周的七天课表,单双周、多课表与背景壁纸均支持。

  • 七天周课表网格与按天查看;长按课程编辑,点击空白节次快捷加课。
  • 教学周切换、多课表管理(可新建 / 重命名 / 切换)、单双周(奇偶周)设置。
  • 课程详情:教室、教师、课程颜色;课表背景支持壁纸、透明度、列宽行高与节次自定义。
  • 时间冲突提示;同一时段重复课程会在导入和编辑时高亮提醒。
  • 课程提醒基于 AlarmManager + RTC_WAKEUP,按节次时间提前提醒;设备重启后由 BootReceiver 自动恢复。

课表导入

支持多种格式;导入完成前都会先生成可编辑的待确认草稿,确认后才写入课表。

  • HTML 课表:教务页面或导出的 HTML 文件。
  • PDF 课表:支持「表格版式」和「列表版式」两种解析模式;扫描件没有文字层时可改用图片识别。
  • Excel / CSV 课表:电子表格导出的课表。
  • 课表口令:以 XGC1- 开头的字符串,便于在同学间传递结构化课表。
  • 图片课表:使用已安装的中文离线 OCR(PaddleOCR + ONNX),或由用户主动配置的 AI 识别。

收件

把微信、QQ、浏览器或相册中的文字和图片通过系统分享菜单分享给弦歌册,集中留在收件中。

  • 通知文字可整理成课程、任务、事件或备忘草稿。
  • 图片可使用已安装的中文离线 OCR,也可使用主动配置的 AI 识别。
  • 文字识别与图片识别都会先进入可编辑的确认草稿,确认后才写入日程或课程。
  • 识别失败时尽量保留原始文字或图片,不会因解析失败而丢失信息。
  • 收件记录可在「我的 → 收件记录」中重新打开、重试 OCR 或删除。

谛听:课堂录音与转写

从「百宝」进入。用于专业课记重点,也适合水课中及时捕捉提问与点名。

  • 录音保存在本机,按约 8 秒分段记录;通过前台麦克风服务运行,系统通知栏会持续显示录音状态,可随时暂停或结束。
  • 支持中文、英文和中英混合场景;可填写专业术语词表(如 CacheTransformer傅里叶变换)。
  • 专业课模式:本地规则雷达识别「重点、考点、必考、定义、定理、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
中文离线 OCRPaddleOCR 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=falsefullBackupContent=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.serializationkotlinx.coroutines
UIJetpack Compose + Material 3(Material Icons Extended)
依赖注入Hilt / Dagger 2.60.1
本地存储Room 2.8.4 + DataStore
网络OkHttp 5
PDF 解析PDFBox Android
离线 OCRPaddleOCR(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_reminderstask_remindersevent_remindersmisc(低优先级测试)和 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=trueisShrinkResources=true)。发布前请同步检查:版本号、APK 签名、update.json 中的 SHA-256,以及 GitHub Release 中的 APK 文件。


为什么做它

大学里的重要信息经常散落在群聊、教务系统、截图和临时通知里。弦歌册不试图替代所有应用,而是把这些零散信息收束成一张能查看、能修改、能提醒、能回听的个人校园清单。

它没有强制账号体系、广告和云同步,适合先从自己的课表开始使用;如果愿意,也可以通过课表口令或备份文件与同学交换结构化课表。

使用语音转写、OCR 和 AI 都可能受到距离、噪声、口音、设备麦克风、网络和模型能力影响。谛听保留原始录音,就是为了在文字不准确时能够回听核对。

请合理控制录音时长和本地存储空间,也请尊重课堂中的录音规定及他人的隐私。


开源协议

弦歌册基于 GPL-3.0 协议开源。你可以自由使用、修改与学习源码;任何衍生作品须同样以 GPL-3.0 开源并保留版权声明。第三方组件和模型另见项目仓库中的 THIRD_PARTY_NOTICES.mddocs/ 说明文件。


联系方式

项目源码、问题反馈与隐私政策:

版权所有 © 2026 弦歌册(iqwqi)· 本政策与说明可能随功能变化更新,重要变化会在应用或本网站中说明。