Skip to content

originem0/slowdown-android

Repository files navigation

SlowDown · 慢下来

SlowDown Logo

一次深呼吸,把此刻还给你

Android Release Tests License


这是什么?

你有没有过这样的时刻:本来只想看一眼,回过神来已经刷了四十分钟——而你甚至说不出刚才看了什么。

SlowDown 针对的就是这个时刻。它不在你打开应用时拦截你——拦截只会让人烦躁,然后卸载。它等到你已经陷入无意识滑动时,才弹出一个安静的深呼吸界面:跟着呼吸圆等几秒,然后由你自己决定,是继续,还是离开。

不是阻止你开始,而是帮你在沉浸中清醒。

那几秒钟不是惩罚,是把"选择"还给你——多数时候,人只是忘了自己还可以选。


为什么是 SlowDown?

与其他屏幕时间应用的区别

SlowDown 常见限时应用
干预时机 沉浸过程中定期唤醒 打开即拦截
干预方式 深呼吸暂停,去留自定 锁死、倒计时恐吓
隐私 全部本地存储,没有申请网络权限——数据想上传都做不到 常要账号、云同步
对用户的假设 你只是暂时忘了,提醒就够 你管不住自己,必须被管

核心理念

  • 过程中觉察:真正的问题不是"该不该打开",而是"刷了多久还没意识到"
  • 不制造焦虑:没有"你已浪费 X 小时"的审判,只有一次平静的呼吸
  • 决定权在你:深呼吸结束后,继续或离开都是你自己的选择

功能

四档干预力度

模式 行为
仅统计 只记录时长,不打扰
温和提醒 达到阈值后弹出深呼吸,等几秒可继续
严格限制 达到限额后全屏拦截;再打开会再次拦截
完全禁止 每次打开都全屏拦截

诚实说明:Android 不允许普通应用真正"杀死"另一个应用。严格模式的本质是持续拦截——每次回到目标应用都会被全屏警告挡住。这对绝大多数"鬼使神差点开了"的场景已经足够;如果你需要物理级封锁,这不是为你设计的工具。

深呼吸干预

  • 跟随呼吸圆的倒计时(3–30 秒可调)
  • 可设置替代去处:刷够了抖音 → 跳去读书应用
  • 自定义提醒语:弹窗里显示你写给自己的话

时长追踪(v1.2.0 重构)

  • 每应用每日限额(1–1440 分钟),80% 温和提醒,100% 按模式处理
  • 数据直接来自系统使用统计(UsageStats),单一数据源,可复现、不虚标
  • 统计在午夜自动翻转——熬夜党的"今日"不会赖在昨天

冷却机制

  • 全局冷却 1–30 分钟(默认 5 分钟),每应用可单独覆盖
  • 提醒之所以有效,恰恰因为它不频繁

短视频模式

抖音、B站这类应用刷视频时不切换 Activity,常规事件监听抓不到。开启短视频模式后每 30 秒主动检查一次。灭屏自动停止——不会在你口袋里点亮屏幕。

统计面板

今日时长与拦截次数、觉察率(选择离开的比例)、平均决策时间、周趋势、月度对比。

截图


下载安装

GitHub Releases 下载最新 APK 安装。

从 v1.1.x 升级的用户请注意:v1.2.0 起更换了签名密钥(旧密钥凭据曾意外进入版本历史,出于安全考虑已轮换)。直接安装会提示签名冲突,需要先卸载旧版再安装。本地数据(监控列表、统计记录)会随卸载清除,望谅解——这是一次性的。

系统要求:Android 10(API 29)及以上。


如何使用

1. 授权

必要权限 作用
无障碍服务 检测应用切换(仅订阅窗口切换事件,不读取屏幕内容
悬浮窗权限 保证弹窗能从后台弹出
使用情况访问 读取应用使用时长

MIUI / HyperOS 用户额外开启:自启动、后台弹出界面、电池策略设为"无限制"。应用内引导页会逐项带你设置。

2. 添加监控

打开 SlowDown →「应用」页 → 选中目标应用 → 设置干预模式和每日限额。刷视频类应用记得打开「短视频模式」。

3. 然后忘掉它

正常用手机。SlowDown 在后台安静计时,只在该出现的时候出现。


常见问题

Q: 为什么不直接锁死应用? A: 强制戒断引发逆反,逆反导致卸载,卸载之后呢?SlowDown 赌的是另一条路:觉察一旦建立,比任何锁都耐用。

Q: 刷短视频时没有提醒? A: 给该应用开启「短视频模式」(30 秒主动检查)。

Q: 我的数据安全吗? A: 应用没有申请 INTERNET 权限——不是"承诺不上传",是技术上无法上传。所有数据存在本机,卸载即清除。

Q: 无障碍服务会读我的屏幕吗? A: 不会。服务配置中 canRetrieveWindowContent="false",只订阅"窗口切换"这一种事件,拿到的唯一信息是前台应用的包名。

Q: 会影响电话、短信吗? A: 不会,系统关键应用自动排除。

Q: 弹窗等待时间能调吗? A: 设置中可调 3–30 秒。


从源码构建

git clone https://github.com/originem0/slowdown-android.git
cd slowdown-android
./gradlew assembleDebug          # 调试包
./gradlew testDebugUnitTest      # 76 个单元测试

构建签名 release 需在 local.properties(已 gitignore)中配置:

RELEASE_STORE_FILE=your-release.keystore
RELEASE_STORE_PASSWORD=...
RELEASE_KEY_ALIAS=...
RELEASE_KEY_PASSWORD=...

缺失时 assembleRelease 会产出未签名 APK 并给出警告。签名凭据永远不进版本库


技术栈

  • 语言:Kotlin 2.2
  • UI:Jetpack Compose + Material 3
  • 架构:MVVM + Repository;时长统计为单一数据源设计(UsageStats),核心逻辑提取为纯函数并有完整单元测试
  • 数据:Room(schema 版本化导出)+ DataStore
  • 系统要求:Android 10+(API 29),targetSdk 35

文档

文档 说明
功能说明书 用户操作手册
技术架构 系统设计与 v1.2.0 单一数据源重构
问题排查 常见问题与历史 Bug 档案
开发指南 代码规范、测试策略、发布流程
更新日志 版本历史

开源协议

本项目基于 MIT 协议 开源。


About

安卓app,打断刷手机,防沉迷,培养觉察而非对抗

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages