简体中文 · English
一次只做一件事。开始后,不再和自己讨价还价。
Android 10 及以上 · 约 29 MB · 测试签名,适合个人安装体验
- 📊 彩色圆环统计 — 给每次专注起个名字,统计页就会用一枚彩色圆环告诉你今天的时间都花在了哪,中心直接显示总时长。
- 🎉 庆祝感完成通知 — 应用在后台也不错过:每完成一轮专注,都会收到一条带声音的祝贺通知,整组完成还有"🏆 恭喜"。
- 🛠 统计不再"丢"时间 — 中途结束的专注、提前结束的休息,实际时长现在都会如实计入统计,并在记录里标注"提前结束"。
|
计时开始后没有暂停按钮,也没有随手可点的普通退出入口。 |
使用 Android 官方屏幕固定,减少 Home 和最近任务造成的分心。 |
无账号、无会员、无广告、无云同步;记录只保存在设备本地。 |
| 能力 | 体验 |
|---|---|
| 不可暂停倒计时 | 开始一次专注承诺后,应用不会用暂停按钮给你留下反复犹豫的入口 |
| 给专注起名字 | 每次专注可以命名(如“高数”“英语”),最近用过的名字一键复用 |
| 自动专注 / 休息 | 专注结束自动休息,休息结束自动进入下一轮;休息可提前结束,专注不可以 |
| 灵活计划 | 自定义专注与休息时间,支持单次、指定轮数和无限循环 |
| 完成庆祝通知 | 应用在后台时,每轮专注完成和整组完成都会收到高优先级的祝贺通知 |
| 内容占比圆环 | 统计页用彩色圆环展示各项专注内容的时间占比,中心显示总时长 |
| 本地统计 | 日、周、月视图,今日累计、连续天数、逐条专注记录;中途结束的时间也如实计入 |
| 会话恢复 | 应用重新打开后,根据本地检查点恢复或结算仍在进行的计时 |
| 外观主题 | 支持浅色、深色与跟随系统 |
严格模式调用 Android 官方
startLockTask()。首次启用时,系统会要求用户确认屏幕固定。
| ✅ 严格模式会做 | 🚫 本项目不会假装能做 |
|---|---|
| 固定期间由 Android 限制 Home 和最近任务 | 不使用设备所有者或无障碍服务控制你的手机 |
| 在倒计时页面拦截普通返回操作 | 不绕过系统手势,谎称用户绝对无法解除固定 |
| 完成或紧急退出后主动解除屏幕固定 | 不阻止系统设置中的强制停止或卸载 |
| 通过系统能力减少切换应用带来的分心 | 不在退到后台后绕过 Android 限制强抢前台 |
不同品牌和 Android 版本的确认提示、解除手势与限制效果可能不同。
| 1 · 设定 给这次专注起个名字,选择专注、休息、循环方式和普通/严格模式。 |
2 · 承诺 点击“我已准备好”,计时立即开始。 |
3 · 完成 专注和休息自动切换,完成后收到祝贺通知,并可查看本组统计。 |
休息阶段可点击“提前结束休息”直接进入下一轮;专注阶段没有这个按钮。确需中断专注时,在倒计时顶部区域长按 10 秒,或在 5 秒内连续点击 10 次,再完整输入“确认退出”。
会话、设置和统计均保存在设备本地。应用不要求登录,不包含会员、付费、广告或行为追踪,也不会上传专注记录。
活动计时数据已从 Android 云备份和设备迁移中排除;卸载应用会同时清除本地数据。
开发与构建
仓库脚本会把 JDK 17 和 Android SDK 安装到 .tools/,无需预先配置 Android 开发环境。
powershell -ExecutionPolicy Bypass -File .\scripts\bootstrap-android.ps1
$env:JAVA_HOME = (Resolve-Path '.\.tools\jdk-17').Path
$env:ANDROID_HOME = (Resolve-Path '.\.tools\android-sdk').Path
$env:ANDROID_SDK_ROOT = $env:ANDROID_HOME
$env:GRADLE_USER_HOME = (Resolve-Path '.\.tools\gradle-user-home').Path
.\gradlew.bat testDebugUnitTest
.\gradlew.bat lintDebug
.\gradlew.bat compileDebugAndroidTestKotlin
.\gradlew.bat assembleDebug assembleRelease构建产物:
app/build/outputs/apk/debug/app-debug.apkapp/build/outputs/apk/release/app-release.apk
Release 构建当前同样使用测试签名,仅适合个人安装和验收。
更完整的 Android 能力边界
- 普通应用无法阻止用户在系统设置中强制停止或卸载应用。
- 用户可使用 Android 规定的系统组合手势解除屏幕固定。
- 系统强制停止后,广播、前台服务和恢复任务会被冻结,直到用户再次打开应用。
- 同一次开机期间优先使用单调时钟抵抗墙上时间回拨;重启后只能结合本地检查点保守恢复。
本仓库当前未附带开源许可证。除非获得明确的书面许可,否则保留所有权利。