Skip to content

About

A fancy Android app that pauses / fades out music, disables things like WiFi and Bluetooth when the timer ends

Topics

Resources

Stars

66 stars

Watchers

2 watching

Forks

Repository files navigation

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, −step and 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

Screenshots

Timer running Settings Themes
Timer running with notification actions Settings screen Theme picker

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
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.

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:

Get it 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)
  • minSdk is 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 wiring
  • core/data/ — settings and timer state (DataStore + repository pattern)
  • core/service/ — foreground service managing the countdown and playback control
  • feature/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.

About

A fancy Android app that pauses / fades out music, disables things like WiFi and Bluetooth when the timer ends

Topics

Resources

Stars

66 stars

Watchers

2 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages