SleepTimer
1.3.0 · GitHub
More about this app
Sleep timer that can pause media, and turn off WIFI/Bluetooth/Display
SleepTimer
Warning
Because Google decided to lock down Android as of September 2026, this app will stop working soon (without a setting that could be removed at any time). If you want to avoid that, sign the petition and hope for the best. For more details read here: https://keepandroidopen.org/
Update: Google made some changes to the date and affected app stores. This luckily means that it's likely this app will continue to work for now.
A fancy sleep timer for Android. Starts a countdown that stops media playback, fades audio out, and optionally locks the screen when it ends — so you can fall asleep without your phone draining the battery or blaring podcasts at 3 AM.
No accounts, no ads, no trackers, no network access.
Features
- Simple countdown timer with
+step,−stepand cancel actions directly from the notification (step is configurable, defaults to 5 min) - Shows the exact wall-clock time at which the timer will end
- Stops audio and video playback across apps at the end of the timer
- Configurable fade-out duration before playback stops
- Optional screen lock when the timer ends — choose between Device Admin (standard Android lock, credential required to unlock) or Shizuku soft lock (simulates the power button, biometric unlock keeps working)
- Optional Wi-Fi, Bluetooth, and mobile data off when the timer ends (via Shizuku, since modern Android blocks apps from toggling these directly)
- Six built-in themes (Midnight, Ocean, Ember, Light, Basic, AMOLED) with an optional drifting starfield behind the dial
- Haptic feedback for timer controls (can be disabled)
- Foreground service keeps the timer reliable even when the app is in the background
- English and German translations
Screenshots
| Timer running | Settings | Themes |
|---|---|---|
![]() |
![]() |
![]() |
Permissions
| Permission | Why it is needed |
|---|---|
FOREGROUND_SERVICE + FOREGROUND_SERVICE_MEDIA_PLAYBACK |
Keeps the countdown running reliably in the background so it fires on time |
POST_NOTIFICATIONS |
Shows the running timer with quick actions (+/− step, cancel) |
BIND_DEVICE_ADMIN (optional, force-lock only) |
Required by Android to lock the screen when the timer ends — only requested if you pick the Device Admin lock method |
The app declares a ShizukuProvider so it can talk to
Shizuku when you enable the Wi-Fi off,
Bluetooth off, mobile data off, or soft-lock features. Shizuku is optional — the core
timer works without it, and the provider is dormant until you opt in.
The app does not request the INTERNET permission. It cannot connect to any
network.
Privacy
- No analytics, crash reporting, or telemetry
- No third-party SDKs (no Firebase, no Google Play Services, no ads)
- All settings are stored locally on your device using Jetpack DataStore
- No data leaves your device
Installation
F-Droid
SleepTimer is available on F-Droid:
GitHub Releases
Signed APKs are published on the Releases page.
Building from source
Requirements:
- JDK 17
- Android SDK with platform 36 (
compileSdk) minSdkis 26 (Android 8.0)
./gradlew assembleRelease
The build is fully reproducible from this repository using a 100% FLOSS toolchain — no proprietary dependencies, no binary blobs.
Project structure
app/— Android application module, entry points, DI wiringcore/data/— settings and timer state (DataStore + repository pattern)core/service/— foreground service managing the countdown and playback controlfeature/timer/— Jetpack Compose UI for the timer and settings screens
Written in Kotlin with Jetpack Compose, Hilt (DI) and kotlinx.serialization.
Contributing
Issues and pull requests are welcome at https://github.com/Xitee1/sleep-timer.
License
SleepTimer is free software licensed under the GNU General Public License, version 3 or later. See LICENSE for the full text.
Copyright (C) 2026 Xitee
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
How Shizuku is used
Can turn off Wi-Fi, Bluetooth, mobile data and the display when the sleep timer ends via `svc` and `input` commands through Shizuku.
This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.
How this app uses Shizuku
Shizuku is used to perform extra switch off actions when the sleep timer expires, after media is paused.
- Turn off Wi-Fi: when the timer ends and the option is enabled, Wi-Fi is switched off with the
svc wifi disableshell command through Shizuku. - Turn off Bluetooth: when the timer ends and the option is enabled, Bluetooth is switched off with the
svc bluetooth disableshell command through Shizuku. - Turn off mobile data: when the timer ends and the option is enabled, mobile data is switched off with the
svc data disableshell command through Shizuku. - Turn off display: when the timer ends and soft screen off is selected, the screen is turned off by simulating a power button press with the
input keyevent 26shell command through Shizuku.
Android APIs or commands used
svc wifi disablesvc bluetooth disablesvc data disableinput keyevent 26
Notable details
Shizuku is optional and only used for the Wi-Fi off, Bluetooth off, mobile data off and soft screen off options. If Shizuku is unavailable or the soft screen off command fails, screen locking falls back to the normal system lock, while pausing media and the core timer work without Shizuku.
Changelog
What's new for version 1.3.0
Features
- Add option to turn off mobile data when timer ends (requires Shizuku) by @Xitee1 in https://github.com/Xitee1/sleep-timer/pull/61
Fixes
- fix(timer): always show H:MM once the timer reaches 60 minutes by @Xitee1 in https://github.com/Xitee1/sleep-timer/pull/62
- fix(timer): animate the dial at most one revolution by @Xitee1 in https://github.com/Xitee1/sleep-timer/pull/63
What's Changed
- chore(release): bump to 1.3.0 and add F-Droid changelogs (103000) by @Xitee1 in https://github.com/Xitee1/sleep-timer/pull/64
Full Changelog: https://github.com/Xitee1/sleep-timer/compare/v1.2.0...v1.3.0
Permissions
5 permissions requested
Sources
2 sources
Sources
2 sources



