一个「刷短视频自动计时 + 超额拦截」的安卓自用工具:识别你自己标记过的短视频页面(比如 B 站竖屏、抖音 feed、小红书视频笔记),一进入就悬浮显示计时;刷超了额度,全屏遮罩请你去摸摸草 🌱。
- 纯本地运行,不联网、不上传任何数据
- 规则不写死在代码里——内置规则也好、自己采的也好,都是同一套「采样生成」的产物:任何应用都能支持,目标 app 改版了重新捕捉一次就修好
- 干预分三级:每 N 分钟轻提醒(默认 5)→ 计时药丸常驻 → 超额全屏拦截(先冷静 30 秒,再选「不刷了 / 再刷 5 分钟」)
- 额度可调:单次连刷(默认 15 分)、每日(默认 45 分)、每周(默认 300 分),0 = 不限
- 统计:今日/本周累计、按规则拆分、近 7 天柱状图
- 内置三条默认规则(B 站竖屏、小红书视频、TikTok),首次启动自动载入,开箱即用;规则可导入/导出(文件或剪贴板,JSON 格式)
核心是无障碍服务(AccessibilityService):
- 捕捉模式:悬浮面板上,短视频页面点 ✓(正样本)、同 app 的普通页面点 ✕(负样本)。每次采样记录当前 Activity 名和窗口控件树里的全部 resource-id。
- 生成规则:自动对正负样本求差——
- 正负样本 Activity 不同(如 B 站竖屏 vs 长视频页)→ 直接按 Activity 匹配;
- Activity 相同(如混排 feed)→ 找出「所有正样本都有、负样本都没有」的控件 id 作为指纹。
- 监测模式:窗口切换时先比 Activity 名(近乎零成本),命中再按需查控件指纹;匹配则开始计时,顶部悬浮药丸每秒刷新「本次 / 今日」时长。失配有 2.5 秒缓冲,视频之间上滑切换不会打断计时。
需要 JDK 17 与 Android SDK(platform 34)。
# macOS 上 JDK 17 (brew install openjdk@17) 时:
JAVA_HOME=/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home ./gradlew assembleDebug产物在 app/build/outputs/apk/debug/app-debug.apk,用 adb install 或直接传到手机安装。
- 安装后开启无障碍服务。Android 13+ 侧载应用的无障碍开关默认是灰的:先到「设置 → 应用 → 咋还在刷 → 右上角 ⋮ → 允许受限设置」,再去开启。
- 内置规则已覆盖 B 站竖屏 / 小红书视频 / TikTok:直接切「监测」模式即可,一进短视频页面顶部就会出现计时药丸。
- 其它 app 用「捕捉」模式自己采样:
- 刷到短视频页面 → 点悬浮窗 ✓,建议采 2~3 次(不同视频各采一次,能过滤掉随内容变化的动态控件)
- 切到普通页面(长视频、图文帖)→ 点 ✕,同样采 2~3 次
- 点「生成规则」,切回「监测」
- 部分 Flutter / 自绘界面的 app 控件树稀疏,可能只能按 Activity 或整个应用计时
- 目标 app 大版本更新后 id 可能变化,规则失效时删掉重采即可
- 熄屏会立即结束会话;息屏前最后一段照常入账
- MIUI 等系统覆盖安装后无障碍服务不会自动重连:主界面会显示
⚠️ 提示,把开关关一次再开即可 - 规则只认 Activity 时,若开启监测的瞬间人已在目标页面内,可能要等下次进入页面才命中——采集负样本生成「控件指纹兜底」条件组可消除此问题
- 高级模式:手动查看/编辑控件树指纹
- 更长周期的统计视图(月/年)
- 社区规则订阅(远程规则源)