Skip to content

Repository files navigation

AutoStop Timer

一个纯本地的 Android 应用:给某个应用设一个倒计时,到点后自动对它执行 am force-stop。适合睡前听 ASMR、听歌、挂直播,听着听着睡着了也不用担心 App 跑一整晚耗电发热。

  • 无网络、无分析、无广告、不收集任何用户数据。
  • 数据全部存在本机 SQLite,不上传任何地方。
  • 不依赖任何云服务或账号。
  • 不做常驻清理工具;只在倒计时到点时唤醒执行一次。

适合场景

  • 睡前听 ASMR / 音乐 / 播客,到点自动停止目标 App。
  • 挂直播当背景音,睡着后自动停掉。
  • 给短视频、游戏等容易沉迷的 App 加一个“到点就停”的限制。
  • 对明确知道用途的系统组件设置临时停止任务,例如蓝牙相关包(需谨慎)。

工作原理

任务通过 AlarmManager 调度,到点由 BroadcastReceiver 唤醒,在后台对目标包名执行 am force-stop <package>。App 执行完立即退出,不做常驻前台服务。

执行器优先级

am force-stop 属于系统级特权命令,普通应用 UID 无法直接执行,需要特权来源。本应用按以下优先级选择执行器:

优先级 执行器 说明
1 Root 设备已 Root,通过 su -c am force-stop 执行。
2 Shizuku 已安装并运行 Shizuku 且授权本应用,通过 Shizuku 授权进程执行。
3 无权限 上述都不可用时,任务无法执行,会标记为失败。

功能

  • 选择已安装应用作为目标,支持搜索应用名 / 包名。
  • 支持 全部 / 用户应用 / 系统应用 筛选,可选择部分没有桌面入口的系统包。
  • 设置倒计时时长:秒 / 分钟 / 小时。
  • 首页和创建页显示最近选择的应用,常用目标不用每次重新搜索。
  • 首页突出显示下一次即将自动停止的任务和剩余时间。
  • 两个动作开关:执行 force-stop、停止后发送通知。
  • 任务列表查看状态:等待 / 执行中 / 完成 / 失败 / 取消。
  • 设置页可切换多套柔和低饱和主题色。
  • 日志收纳为设置页的二级界面,可查看执行日志与诊断日志。
  • 设置页包含关于卡片,显示应用说明、版本号和仓库链接。
  • 开机后自动恢复未触发的任务并重新调度。

停止系统应用可能影响蓝牙、通知、设置或其他系统功能,请只对自己明确了解的包使用。

当前版本

0.4.0

最近更新

  • 0.4.0:首页/创建页新增最近选择快捷入口;首页新增下一任务倒计时提示。
  • 0.3.2:设置页新增关于卡片,显示应用说明、版本号与 GitHub 仓库链接。
  • 0.3.1:应用选择列表纳入系统应用,并提供全部 / 用户应用 / 系统应用筛选。
  • 0.3.0:新增柔和主题色预设;新增设置页;日志移入设置页并作为二级页面查看。
  • 0.2.0:移除 ADB 执行器;优化应用列表缓存;开启 release 瘦身构建。

构建

要求:JDK 8+、Android SDK(compileSdk 34)、Gradle wrapper 已附带。

gradlew.bat assembleDebug      # Windows debug
./gradlew assembleDebug         # macOS / Linux debug

Debug APK:

app/build/outputs/apk/debug/app-debug.apk

Release APK:

gradlew.bat assembleRelease
app/build/outputs/apk/release/app-release.apk

安装到已连接设备:

adb install -r app/build/outputs/apk/release/app-release.apk

minSdk 26,targetSdk 34,versionName 0.4.0

技术栈

  • Kotlin + Jetpack Compose + Material 3
  • Compose BOM 2022.10.00,Kotlin 1.7.20,Compiler Extension 1.3.2
  • MVVM(MainViewModel + Compose 状态)
  • 本地 SQLite(自定义 SQLiteOpenHelper,无 Room)
  • AlarmManager + BroadcastReceiver 调度
  • Shizuku api / provider 13.1.5

项目结构

app/src/main/java/com/vexeno/autostoptimer/
├─ AutoStopTimerApp.kt          # Application 入口
├─ MainActivity.kt              # Compose 入口
├─ app/                         # AppContainer、调试日志、主题偏好存储
├─ domain/                      # 接口与模型(CommandExecutor、ExecResult、StopTask...)
├─ executor/                    # 执行器实现(Root / Shizuku / Resolver / ShellRunner)
├─ scheduler/                   # AlarmManager 调度与任务执行管理
├─ receiver/                    # 触发接收器、开机恢复
├─ data/                        # SQLite 仓库与 DBHelper
└─ presentation/                # Compose UI、ViewModel 与主题预设

隐私

  • 全程离线运行,不发起任何网络请求。
  • 不含任何分析、广告、遥测 SDK。
  • 应用列表、任务、日志仅存于本机应用私有目录。

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages