This is a meditation timer. Minimalistic, reliable, and truly elegant.
<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" alt="Get it on F-Droid" height="80">
Or download the APK directly from GitHub:
Meditation is a truly minimalistic countdown timer for meditation, with a clean user interface and no clutter. The minimalism of the app embodies meditation's actual purpose.
A notable feature of the app is the ability to customize the volume of the notification bells independently of system volume. This allows you to set a predefined volume so that the sounds will reliably play at the same loudness every time. No more mid-meditation worrying that you remembered to turn the volume up!
Another important feature is for the timer to be as reliable as possible, to ensure an accurate meditation time and prompt ending sound notification. This is achieved by starting a foreground service and disabling battery optimization.
Reliability is of extreme importance to a meditation tool in order to eliminate all possible worries about the timer not behaving correctly. Just press the button and start!
If you find this project helpful and you feel like it, throw me some coins!
And drop a star on this repo :)
Bitcoin: bc1qfu5gk78898zdcxw372unmwua0yd5luf3z60sgq
An important feature to implement was to have the volume of the notification bells be consistent and reliable. In other apps, the volume is tied to the system volume, implemented either as using the system volume setting directly, or as a modifier thereof. Both approaches are flawed and will lead to inconsistent volumes if the system volume changes or if you had forgotten to set it to the desired level before starting the timer. With my approach the app makes use of a configurable absolute value, so that the sounds play consistently at the same volume no matter what.
Another issue to solve was the reliability of the timer timeout event, making sure it happens at exactly the right time. For whatever reason, this is a ridiculously complex problem on mobile devices. There are continuous "improvements" to attempt to extend battery life, that make it really hard to ensure that a time-critical task happens at the right time. This app will make use of all possible tricks to ensure it is reliable. What I settled on was a combination of a foreground service and disabling battery optimization. This allows notifications to be sent reliably at the correct time. If that still doesn't work, you also have the option of keeping the screen on through wakelock.
Here's a listing of the original audio files that each asset was derived from. They were all modified to improve cohesion.
All source code is licensed under the GPL-3.0-only License.
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, version 3.
All assets (images and audio files) are licensed under the CC-BY-SA 4.0 License.
This includes everything in the assets and media folders and in android/app/src/main/res.
This project is developed using the Flutter framework, which is licensed under the BSD 3-Clause License.
Additional licensing information on all of the Flutter modules that are being used can be found in the in-app About screen.