我构建了一个开源 Android 应用,根据环境光切换暗模式 – Adaptive Theme
发布: (2026年1月3日 GMT+8 19:56)
3 分钟阅读
原文: Dev.to
Source: Dev.to

你好,祝新年快乐!
我想分享一个我在业余时间一直在开发的开源项目。
Adaptive Theme
Adaptive Theme 会根据环境光传感器自动在浅色模式和深色模式之间切换——而不是固定的时间表。这样可以提升可读性、眼睛舒适度,甚至可能延长电池续航。它是 免费、无广告、开源 的。
- Play Store:
- GitHub Repo:
电池效率
为了避免因持续轮询传感器而导致的电池消耗,应用完全采用被动方式。它使用事件驱动的架构,在屏幕点亮后立即短暂检查一次光线传感器。没有后台轮询,只会响应系统广播。
注意: 这种事件驱动的方式在 Android 14 及以上版本有效。低版本系统中,接收器无法正确读取传感器。
设置与权限
最大的难点在于应用需要 WRITE_SECURE_SETTINGS 权限来更改系统主题。授予此权限并不简单,因此提供了基于向导的设置流程,包含多种方法:
- Web 工具(推荐) – 基于浏览器的设置工具,可在另一台设备上使用,无需安装代码或 ADB(WebADB)。访问 。
- Shizuku – 如果已安装并配置好 Shizuku,可以在 Adaptive Theme 应用内直接授予权限。
- Root – 在已 root 的设备上,应用内单击一次即可授予权限。
- 手动 ADB – 若电脑已安装 ADB,可手动运行所需的 ADB 命令。
技术栈与架构
- UI: 使用 Jetpack Compose 搭配 Material 3 / Material You,外观与系统设置(原生/Pixel)保持一致。
- 架构: MVVM + 单 Activity 模式。
- 并发与流: Kotlin Coroutines 与 Flow,实现响应式状态管理。
- 持久化: Jetpack DataStore,用于类型安全的设置存储。
构建风格
两种不同的构建风格确保核心应用符合 FOSS(自由开源软件)规范:
- Play Store: 包含 Firebase(专有的崩溃日志等)。
- FOSS(GitHub Releases 等): 干净的构建,不含任何专有组件或追踪器。
期待听到你的想法和意见!如果发现 bug 或有新功能的点子,请告诉我。我会随时回答问题。