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.
- 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 "let the song finish": when the timer ends, the current song may play to its end before the fade-out starts (configurable maximum wait; the song length is read via notification access or Shizuku)
- Optional screen lock when the timer ends — choose between Device Admin (standard Android lock, credential required to unlock), Accessibility soft lock (locks like the power button, biometric unlock keeps working, no Shizuku needed) 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)
- Home screen widget to start the timer with one tap — each widget can use the last used duration or its own fixed duration
- Quick Settings tile that starts the timer with the last used duration
- Six built-in themes (Midnight, Ocean, Ember, Light, Basic, AMOLED) with an optional drifting starfield behind the dial
- Screen rotation setting (follow the system setting, always rotate, or portrait only)
- Haptic feedback for timer controls and a launch animation for the start button (both can be disabled)
- Foreground service keeps the timer reliable even when the app is in the background
- English and German translations
| Timer running | Settings | Themes |
|---|---|---|
![]() |
![]() |
![]() |
| 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 |
| Accessibility service (optional) | Locks the screen when the timer ends — only needed if you pick the Accessibility lock method; it does not read any screen content |
| Notification access (optional) | Reads the length and position of the playing song for "let the song finish" — only needed if you pick the notification access method; it does not read any notification content |
The app declares a ShizukuProvider so it can talk to
Shizuku when you enable the Wi-Fi off,
Bluetooth off, mobile data off, Shizuku soft lock, or Shizuku song length 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.
- 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
SleepTimer is available on F-Droid:
Signed APKs are published on the Releases page.
Requirements:
- JDK 17
- Android SDK with platform 36 (
compileSdk) minSdkis 26 (Android 8.0)
./gradlew assembleReleaseThe build is fully reproducible from this repository using a 100% FLOSS toolchain — no proprietary dependencies, no binary blobs.
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.
Issues and pull requests are welcome at https://github.com/Xitee1/sleep-timer.
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.



