Effective date: 2026-06-03
Publisher: ZADIO EOOD, registered in the Republic of
Bulgaria (EU). Registered office: Ploshtad Han Kubrat 1, Ruse,
Bulgaria.
Contact:
app@zadio.bg
Because the App collects no personal data (see below), no separate "data controller" designation is required under the GDPR or any equivalent regulation.
Summary
SingingNumbers does not transmit any data off your device. The app has no internet permission, no analytics, no crash-reporting service, and no advertising. The only information stored on your device is a small set of user-preference values (selected musical scale, octave, instrument, language, tempo / rhythm / pitch / haptic settings, and any calculations you choose to save via the "Saved" screen). All of this lives in the app's private storage, never leaves the device, and can be erased with Android's standard "Clear data" / uninstall actions.
What the app does
SingingNumbers is a free, fully offline calculator that maps each digit and operator to a musical note. The current version exposes six user-facing screens through the navigation drawer:
- Calculator — arithmetic with a Material 3 keypad; every keypress and the final result are sung as a short musical phrase. A Big Calculator mode extends the keypad to 24 notes (0–23).
- Saved — view, replay, and manage calculations you have chosen to save.
- Scales — pick which musical scale the calculator sings in.
- Octaves — pick which octave range the calculator sings in.
- Instruments — pick which synthesised instrument timbre the calculator uses.
- Settings — haptic feedback toggle, tempo, rhythm, and pitch preferences.
All six screens run entirely on your device. A seventh, developer-only Diagnostics screen exists in the codebase but is intentionally hidden from the drawer in published builds.
How the app works
- All arithmetic is performed locally on your device using a deterministic Shunting-Yard expression evaluator.
- Sound synthesis is performed in real time on-device. The app uses Google Oboe (a low-latency audio output library — output only, no microphone access) and Android's audio output APIs. No audio recording, audio uploads, or audio downloads are possible.
- The app declares exactly one Android permission —
android.permission.VIBRATE, a "normal" protection-level permission used only to play a short haptic tick when you press a button. Normal-protection permissions are auto-granted by the operating system and never appear on any install-time or runtime permission prompt. In particular, the app does not declare INTERNET or ACCESS_NETWORK_STATE, so the operating system will refuse any attempt by the app's process to open a network socket. - The app contains no analytics, crash-reporting, advertising, or tracking SDKs of any kind. No Firebase, no Google Analytics, no Crashlytics, no Sentry, no Bugsnag, no Facebook SDK, no AppsFlyer, no advertising IDs.
Permissions
SingingNumbers declares exactly one Android
permission: android.permission.VIBRATE.
VIBRATE is at the "normal" protection level. It is granted automatically by the system, never appears on any install-time or runtime permission screen, and is used only to drive a brief (~20 ms) haptic tick when you press a calculator button. VIBRATE cannot read, store, or transmit any data; it only operates the device's vibration motor.
The app does not request, and the manifest does not declare, any of: contacts, location, microphone, camera, storage, biometrics, calendar, phone state, SMS, Bluetooth, Wi-Fi, NFC, INTERNET, ACCESS_NETWORK_STATE, or any other sensor or system service.
Data stored on your device
To remember your preferences across launches and to support the Saved screen, the app stores a small set of values in its private SharedPreferences area on your device:
Preference files (user-chosen settings only):
singing_numbers_instruments.xml— selected instrument timbresinging_numbers_scales.xml— selected musical scalesinging_numbers_octaves— selected octave rangesinging_numbers_settings— haptic on/off, tempo, rhythm, and pitch sliderssinging_numbers_big_calc— Big Calculator mode togglelanguage_prefs— selected in-app UI language
Saved-calculations file — created only if you tap "Save" on the Saved screen; otherwise it does not exist:
saved_expressions— JSON array of the expressions you chose to save (title + expression text). The app never auto-saves any expression.
All of the above:
- Live in the app's private app-data folder (Android sandbox), where no other app on your device can read them.
- Are never transmitted off the device — the app has no INTERNET permission, so a network upload is technically impossible.
- Are excluded from Android Auto Backup and Cloud Backup, so they are not synced to your Google account either.
- Can be erased by uninstalling the app, by Android Settings → Apps → SingingNumbers → Storage → "Clear data", or (individual saved expressions) from inside the Saved screen.
No other files, databases, caches, or logs are written by the app. Calculator expressions you have not explicitly saved are not persisted — they exist only while displayed on screen and are discarded as soon as you clear the display, navigate away, or close the app.
Crash handling
If the app crashes, an in-process repository captures a one-line summary (exception class, message, top stack frame, the thread name, and a millisecond timestamp). This summary lives only in process memory — it is never written to disk and never transmitted off the device. When the app process is killed, the summary is gone.
The summary exists solely so the in-app developer Diagnostics screen (intentionally hidden from the public navigation drawer in this release) can show "what blew up last time" to a developer running the app on their own device. It is never sent to the developer or to anyone else.
Third-party software
SingingNumbers links open-source libraries (including AndroidX, Jetpack Compose, Hilt, Kotlin Coroutines, Timber, and Google Oboe) into the distributed APK / AAB. None of these libraries are configured to collect or transmit data when used as integrated by SingingNumbers.
Age rating and children's privacy
SingingNumbers is published for a target audience of Teen (13+) on Google Play. The app is not enrolled in Google Play's "Designed for Families" programme.
The app collects no personal information from any user, including users under the age of 13 who may use the app despite the 13+ rating. Because no data is collected or transmitted, the app does not require parental consent under COPPA, GDPR-K, or any other regional children-data regulation.
International users
Because no personal data is collected, processed, or transferred, GDPR (EU), UK GDPR, CCPA / CPRA (California), LGPD (Brazil), PIPEDA (Canada), and other privacy regulations do not impose obligations on the developer beyond this disclosure. Users in any jurisdiction can use the app with confidence that their personal data remains entirely on their device and is never transmitted anywhere by this app.
Changes to this policy
If this policy changes, the updated text will be posted at this URL and the "Effective date" line will be updated. Given the app's design (zero data collection, zero network access), material changes are unlikely.
Contact
If you have any questions about this Privacy Policy, please contact:
app@zadio.bg
License
SingingNumbers is licensed under the Apache License, Version 2.0. A public source-code repository is not currently available for this version of the App. The Apache 2.0 license still applies to anyone who lawfully receives a copy of the source code, granting them the right to use, modify, and redistribute it under the license's terms. If a public repository is published in the future, this notice will be updated with the URL.