"Choose from a music app…" in the sound picker browses any app that shares its library through Android's MediaBrowserService and stores the choice as a clockula://media URI in the existing ringtone field — no schema change, no new permission, no internet. The music app streams with its own. At ring time the app is asked to play through its media session. Every wait is bounded and any failure falls back to the ordinary alarm sound: the app won't connect or start, stalls or buffers too long, or the media stream might not be heard (headphones or a classic Bluetooth device connected, Do Not Disturb muting media). The ramp drives the media stream and the user's media volume is restored when the last media ring ends. RingAudioPlayer.start no longer suspends: vibration starts up front, the timer collector is not held up, and a generation token keeps late work from reviving a stopped ring.
202 lines
8.5 KiB
Markdown
202 lines
8.5 KiB
Markdown
---
|
||
title: Privacy Policy — Clockula
|
||
description: What Clockula does with your data. It collects nothing, sends nothing, and has no internet permission at all.
|
||
updated: 2026-10-02
|
||
---
|
||
|
||
<!--
|
||
THIS FILE IS THE POLICY. Edit it here, in a PR, reviewed like any other
|
||
change. It is the source of truth.
|
||
|
||
It is published at https://jeanlucmakiola.de/clockula/privacy, which is the
|
||
address for the app's privacy-policy link and the Play Console field. That
|
||
page holds no copy of the prose: the website build checks this repository out
|
||
beside itself and renders this file through an Astro content collection, so
|
||
there is exactly one copy of the policy anywhere and the two cannot drift. An
|
||
edit here reaches the live page on the site's next build.
|
||
|
||
The page supplies its own <h1> from the `title` above, so this body starts at
|
||
the first section. Do not add one. This comment is HTML so that it cannot
|
||
render on the published page.
|
||
-->
|
||
|
||
**Last updated:** 2 October 2026
|
||
Applies to the Android app **Clockula** (package `de.jeanlucmakiola.clockula`),
|
||
all versions and all distribution channels.
|
||
|
||
## In short
|
||
|
||
Clockula collects nothing, sends nothing, and has no user accounts. It has no
|
||
internet permission, so it cannot transmit your data anywhere. Your alarms,
|
||
timers and world clocks are stored on your device and nowhere else.
|
||
|
||
## 1. Controller
|
||
|
||
IT-Dienstleister | Jean-Luc Makiola
|
||
Mahlerstraße 10
|
||
14772 Brandenburg an der Havel
|
||
Email: [support@jeanlucmakiola.de](mailto:support@jeanlucmakiola.de)
|
||
|
||
## 2. No data collection
|
||
|
||
Clockula contains no analytics, tracking, advertising, crash-reporting SDK or
|
||
third-party service of any kind. It creates no user profile and generates no
|
||
identifier, and it shares or sells no data to anyone.
|
||
|
||
The app does not request the `android.permission.INTERNET` permission, and
|
||
without it Android does not let an app open a network connection. You can check
|
||
this yourself in the permission list of any released APK, or in the
|
||
[source code](https://codeberg.org/jlmakiola/clockula).
|
||
|
||
## 3. Data Clockula keeps on your device
|
||
|
||
Everything below is processed locally on your device. None of it is
|
||
transmitted, and the developer never receives or stores any of it.
|
||
|
||
### Alarms, timers, stopwatch and world clocks
|
||
|
||
Clockula keeps its own database in the app's private storage. It holds your
|
||
alarms (time, repeat days, label, sound and similar options), your timers and
|
||
their labels, the stopwatch and its laps, and the list of cities you added as
|
||
world clocks. No other app can read this database. Uninstalling Clockula
|
||
deletes it.
|
||
|
||
World clock times are calculated from the time zone data built into Android.
|
||
Adding a city does not look anything up online.
|
||
|
||
### Other apps setting alarms
|
||
|
||
Clockula supports Android's standard alarm interface, so a voice assistant or
|
||
automation app can set, show or dismiss alarms and timers in Clockula. Android
|
||
only lets apps that declare the `SET_ALARM` permission do this. Clockula
|
||
receives what that app sends (for example a time and a label) and stores it
|
||
like an alarm you created yourself. It sends nothing back beyond the result of
|
||
the request.
|
||
|
||
### Alarm and timer sounds
|
||
|
||
You can choose one of the ringtones that come with your device, or pick your
|
||
own audio file through Android's system file picker. Clockula can then read
|
||
exactly that file, so it can play it when the alarm rings. It has no access to
|
||
your other files.
|
||
|
||
You can also let a music app on your device play the alarm. Clockula then sees
|
||
which installed apps share their music library through Android's standard media
|
||
interface, and nothing else about your installed apps. When you browse one,
|
||
Clockula reads the folder and track names that app chooses to share and stores
|
||
the item you pick. When the alarm rings, Clockula asks that app to play it. The
|
||
music app plays it with its own permissions and under its own privacy policy.
|
||
If it streams the music, the music app opens that connection, not Clockula.
|
||
Clockula still has no internet access.
|
||
|
||
### Notifications and the lock screen
|
||
|
||
Alarms, timers and the running stopwatch appear as local notifications, and a
|
||
ringing alarm can show a full-screen view over the lock screen. Android also
|
||
shows your next alarm in the status bar and on the lock screen. None of this
|
||
uses a push service.
|
||
|
||
### Home-screen widgets
|
||
|
||
The widgets show data from Clockula's own database, such as your next alarm,
|
||
a running timer or the stopwatch. Each widget's style and settings are stored
|
||
on your device.
|
||
|
||
### Backup files
|
||
|
||
Clockula can export your alarms, timers, world clocks and settings to a
|
||
`clockula-backup-v1.json` file in a folder you pick, and import such a file
|
||
again. The app reads and writes only the folder or file you select through
|
||
Android's system file picker. The file contains your alarm and timer labels,
|
||
so treat it like any other personal file when you move or share it.
|
||
|
||
### App settings
|
||
|
||
Your preferences (theme, language, snooze length, default sounds and similar)
|
||
are stored on your device and are removed when you uninstall the app.
|
||
|
||
## 4. Android backup
|
||
|
||
If Android Auto Backup is turned on for your device, Android may back up
|
||
Clockula's database and settings to your own Google account, under Google's
|
||
terms. The developer has no access to that backup. You can turn Auto Backup off
|
||
in your device's system settings.
|
||
|
||
## 5. Crash reports: the only case where data can leave your device
|
||
|
||
If Clockula crashes, it offers to report the problem. It never sends anything
|
||
on its own. The report is copied to your clipboard and your browser opens the
|
||
project's issue tracker with the text filled in. You can read the full report,
|
||
edit it, or discard it, and nothing is submitted unless you submit it.
|
||
|
||
The report contains:
|
||
|
||
- the app version,
|
||
- the Android version,
|
||
- the device manufacturer and model,
|
||
- your device language,
|
||
- the time of the crash,
|
||
- and the technical stack trace.
|
||
|
||
It contains no alarms, timers, labels or other personal data.
|
||
|
||
If you submit it, the report becomes a public issue on the project's issue
|
||
tracker at Codeberg, which Codeberg e. V. operates. Their privacy policy
|
||
applies to that submission.
|
||
|
||
## 6. External links
|
||
|
||
The settings screen links to the source code, the licence, the issue tracker
|
||
and a voluntary donation page (Ko-fi). The "Why might my alarm not ring?"
|
||
check can also link to dontkillmyapp.com, which explains battery restrictions
|
||
for your phone's manufacturer. Opening any of these links starts your browser
|
||
and leaves the app, and the privacy policy of that website applies from then
|
||
on. Clockula only opens the address and sends no data of yours with it.
|
||
|
||
## 7. Permissions and why they exist
|
||
|
||
- `USE_EXACT_ALARM`, `SCHEDULE_EXACT_ALARM`: ring alarms and timers at the
|
||
exact time.
|
||
- `RECEIVE_BOOT_COMPLETED`: schedule the next alarm again after the phone
|
||
restarts.
|
||
- `USE_FULL_SCREEN_INTENT`: show the ringing alarm over the lock screen.
|
||
- `POST_NOTIFICATIONS`, `POST_PROMOTED_NOTIFICATIONS`: show alarm, timer and
|
||
stopwatch notifications, including the live timer in the status bar.
|
||
- `FOREGROUND_SERVICE`, `FOREGROUND_SERVICE_SYSTEM_EXEMPTED`,
|
||
`FOREGROUND_SERVICE_SPECIAL_USE`: keep a ringing alarm, a running timer or the
|
||
stopwatch going while the app is in the background.
|
||
- `WAKE_LOCK`: keep the phone awake while an alarm or timer rings.
|
||
- `VIBRATE`: vibrate when an alarm or timer rings.
|
||
- `ACCESS_NETWORK_STATE`: added by the Android library that updates the
|
||
home-screen widgets (WorkManager). It lets an app see whether a network
|
||
connection exists. It does not let it use one, and without `INTERNET` no
|
||
connection is possible.
|
||
|
||
## 8. Distribution channels
|
||
|
||
Clockula is distributed through the project's releases on Codeberg, a
|
||
self-hosted F-Droid repository, Obtainium and, where available, F-Droid and the
|
||
Google Play Store. When you download or update the app, the operator of that
|
||
channel processes data such as your IP address under its own privacy policy.
|
||
The developer has no control over this, and it is separate from what the app
|
||
itself does.
|
||
|
||
## 9. Children
|
||
|
||
Clockula is suitable for all ages. It collects no data from anyone, children
|
||
included.
|
||
|
||
## 10. Your rights
|
||
|
||
The developer processes no personal data of yours, so there is no stored data
|
||
to which the rights of access, rectification, erasure, restriction, data
|
||
portability or objection (Art. 15–21 GDPR) could apply. You can still contact
|
||
the address above with any question, and you have the right to lodge a
|
||
complaint with a supervisory authority.
|
||
|
||
## 11. Changes to this policy
|
||
|
||
If a change to the app affects how it handles data, this policy will be updated
|
||
and the date at the top changed. The history of this file is public in the
|
||
project's repository.
|