Adaptive Theme automatically switches between Light and Dark mode using your phone’s ambient light sensor (lux) — not a fixed schedule.
It adapts to real lighting conditions to improve readability, eye comfort, and battery life.
- Install Adaptive Theme.
- Grant the permission with our web-tool, Shizuku, or other methods below.
- Pick your lux threshold and you’re done. ✅
- ✨ Features & Highlights
- 🛠️ One-Time Setup
- ⚙️ How it Works
- ✅ Safety
- ❓ FAQ
- ❤️ Support the Project
- 🏗️ Architecture & Tech Stack
- 🌤️ Smart Detection: Uses your devices physical light sensor to switch the system theme.
- ⚙️ Custom brightness threshold: Choose exactly when Light ↔ Dark should flip.
- 🔋 Battery Friendly: The app is passive. Its event-driven architecture only checks the sensor when you turn on the screen — zero battery drain in the background.
- 🗝️ No Root Required: Root access is not required (but is supported as an alternative setup method).
- 🐱 Shizuku Support: One of multiple setup options is using Shizuku.
- 🚀 Modern & Native: Built with best-practices using Kotlin, Jetpack Compose and Material You for a smooth and solid experience.
- 🔒 Transparent: Free, open-source, no-ads.
Android restricts apps from changing system themes by default. To unlock this feature, the
permission (WRITE_SECURE_SETTINGS) has to be granted.
The app comes with an easy step-by-step setup process, that lets you choose one of the following methods to do so:
-
Web Tool (Recommended) – Use our browser-based setup tool on a secondary device (Computer, Tablet, or Phone). No code or ADB installation required (WebADB). 👉 lexip.dev/setup
-
Shizuku – If you have Shizuku installed and configured, you can grant the permission directly within the Adaptive Theme app.
-
Root – If your device is rooted, you can grant the permission with one tap inside the app.
-
Manual ADB – If you have ADB installed on your computer, you can run the ADB grant command manually via your terminal.
Wondering why the theme didn't change immediately?
To avoid screen flicker and unnecessary background work, Adaptive Theme follows strict rules:
- Event-driven: It checks the light sensor only immediately after the screen turns on.
- Validity check: It verifies that the sensor is not obstructed (e.g., by a hand or pocket).
- Seamless switch: It switches the theme instantly, ensuring the UI is ready before you start interacting with it.
The required permission only allows the app to change system settings such as the dark mode. This is absolutely safe and completely reversible by uninstalling the app. It does not grant root access or read any user data.
Does this require root?
- No. It works on stock devices. However, if you have Root, it can optionally be used to set up the service faster.
Does it work with custom Android skins (Xiaomi MIUI, Samsung OneUI, etc.)?
- In most cases, yes. It works with any system that respects the native Android Dark Mode implementation.
My theme doesn’t change — what should I check?
- Keep in mind that the theme only switched immediately after the screen is turned on, to optimize sensor usage and to not interrupt your device usage.
- Check that your sensor isn’t covered when you turn the screen on.
- Adjust your lux threshold and test in clearly bright/dim conditions.
If Adaptive Theme doesn’t work for you — or if you have any questions or ideas — please open an issue here or send feedback via the app.
Adaptive Theme is completely free, ad-free, open source, and developed in my free time.
If you enjoy using the app, there are three simple ways you can support the project:
⭐ Star on GitHub: Give this repository a star to help others find it.
🌟 Rate on Google Play: A 5-star rating is the best way to boost the ranking.
☕ Buy me a Coffee: If you are feeling generous, you can also buy me a coffee.
📣 Spread the Word: Share the app to help the project grow.
Adaptive Theme is built with modern Android engineering standards to ensure a lightweight, maintainable, and production-ready codebase.
Modern Codebase: Written entirely in Kotlin with Jetpack Compose and Material 3 (Material You).
Architecture: Follows the MVVM pattern with a Single-Activity architecture.
Reactive Data: ViewModels expose data via Kotlin Flows and manage concurrency with Coroutines.
Persistence: Type-safe settings storage with Jetpack DataStore.
Background Work: Sensor operations run event-driven – only upon screen-on broadcasts – ensuring zero unnecessary battery drain in the background.
> Keywords: theme switcher · android automation · night mode · dark sense · automatic dark mode · brightness-based · light-based · based on lux · google pixel · auto dark theme · shizuku apps · android 14 · android 15 · android 16 · android 17 <
