RoutinePlus: IsWorkday 是专为三星“模式与日常程序”设计的系统级逻辑插件。
- 精准调度:基于中国法定节假日与调休规则,提供精准的闹钟自动化调度。
- 本地优先 (Local-First):以本地 Room 数据库为核心驱动,弱化网络依赖,确保离线环境下的毫秒级响应。
- 弹性调控 (Flexible Override):支持“日历自定义覆盖与批量设置”功能。用户可在日历中多选任意日期,强制设置为“强班”(可独立配置专属闹钟时间)或“强休”,优雅打破法定假期的固有逻辑,轻松应对临时假、出差与特变调休。
- 无感集成:通过静态 Shortcut 完美集成到三星“日常程序”中。无需忍受动态 Shortcut 带来的兼容性问题。
- 多路闹钟极速配置 (v1.3.5+):用户可在“规则配置”页签中点击“+”悬浮按钮自由添加多达 5 个 独立的判定闹钟(各自拥有独立的触发时间、判定偏置、生效规则和闹钟标签)。卡片右侧配有
Switch一键开关,修改即时自动在 Room 数据库中落库。 - 日历自定义拦截:用户可在日历多选界面,针对特变日期强制设置“强班/强休”,并可为“强班”单独赋予专有闹钟时间,记录持久化在 Room 数据库中。
- 日常程序单点触发:用户在三星“日常程序”中仅需设定一个统一的触发时间点(如:每晚 22:00 睡前),添加“RoutinePlus”提供的静态快捷方式「执行闹钟规则」。
- 批量并行静默执行:日常程序拉起我们时,判定引擎会自动批量提取所有“已启用”的闹钟,依次进行独立的日期与节假日校验,并将满足触发条件的闹钟一键批量设置进手机系统闹钟里,不符合的智能跳过,全程零 UI 视觉打扰!
要让 RoutinePlus: IsWorkday 真正为你服务,你需要配合三星系统的“模式与日常程序”进行以下几步设置:
-
在 RoutinePlus 内管理闹钟:
- 打开 “规则配置” 页签,点击右下角
+悬浮按钮,在弹出的 BottomSheet 抽屉里配置闹钟时间、判定条件(仅工作日 / 仅休息日 / 每天)、校验目标(今天 / 明天,睡前判定一般选明天)和闹钟标签,即可一键创建。 - 重复此步骤,最多可添加 5 个不同标签和时间的独立闹钟。
- 随心开关卡片右侧的 Switch。右上角提供 ⚡ 闪电按钮,点击即可在后台立刻手动批量模拟运行一次判定并弹窗反馈,非常方便调试!
- 打开 “规则配置” 页签,点击右下角
-
在系统中创建“日常程序”:
- 打开三星手机的 设置 -> 模式与日常程序 -> 日常程序。
- 点击右上角的
+新建一个日常程序。 - 满足以下条件时 (If):设定你的触发时机。例如:“特定时间 -> 晚上 22:30”。
- 则执行该操作 (Then):点击添加操作,选择
应用程序 -> RoutinePlus -> 执行闹钟规则(这是一个静态快捷方式)。
-
效果演示:
- 到达晚上 22:30 时,系统会静默唤起 RoutinePlus 的无界面快捷任务。
- 判定引擎读取 Room 中的多闹钟列表,对所有已启用的闹钟同时在后台极速计算。如果判定符合条件(例如:明天是工作日,已启用的 7:30 通勤闹钟和 8:30 例会闹钟符合规则),则自动在系统时钟里一次性把这两个闹钟都创建完毕,并在屏幕下方弹出一个纯文字 Toast 提示(如:“闹钟判定完毕:已设置 2 个,跳过 0 个”),全程无感知、零打扰。
本项目全面拥抱 Google Material You (Material 3) 规范:
- 全局使用柔和的莫兰迪/马卡龙色系(使用
secondaryContainer替代死板的灰色)。 - 提供原生的 Light / Dark / 跟随系统 主题无缝切换。
- 极简、清爽的 UI 结构与排版。
- 语言:Kotlin 2.1.0
- UI 框架:Jetpack Compose
- 依赖注入:Hilt
- 持久化:Room (节假日数据与多闹钟列表), DataStore (偏好配置)
- 网络请求:Ktor Client
- 后台任务:WorkManager (12小时周期自动同步节假日数据)
- CI/CD:GitHub Actions 自动构建与发布
节假日数据来自开源项目:NateScarlet/holiday-cn
为防止单一 CDN 挂掉,应用内置了双链路容灾策略:
- 主链路:
https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/ - 备链路:
https://fastly.jsdelivr.net/gh/NateScarlet/holiday-cn@master/
在项目根目录运行:
./gradlew assembleDebugRelease 版本可以通过推送 v*.*.* 标签触发 GitHub Actions 自动构建打包。