⚖️ Legal Document

Privacy Policy

Vibe — NextGen Music Player

📅 Effective June 27, 2026

Vibe is built on an offline-first, privacy-respecting philosophy. Your music library, listening history, and personal reflections stay on your device. This policy is a complete and accurate account of what data is collected, where it goes, and what you can do about it.

🔒 Local-first storage 📴 Offline playback 📍 Optional location 🔇 No analytics SDK 👤 No account required
Contents
📋
Section 1
Overview

Vibe is an Android music player that reads and plays audio files stored locally on your device. The core experience — playback, playlists, equalizer, and audio tools — is entirely offline. No account, no sign-up, no cloud sync.

Several optional features use the internet: fetching song lyrics, streaming music, playing internet radio, and displaying advertisements. Each is described in full in Section 4. No analytics SDK, crash reporter, or user-tracking library is embedded in the app.

ℹ️

Vibe has no way to identify you personally. There is no account, email address, or username, and nothing in Vibe's local database is linked to your identity. Your listening history exists only on your own device. (Advertising uses a separate device-level identifier managed by Google — see Section 4.)

🗄️
Section 2
Data We Collect & Store

All data below is stored locally in Vibe's private SQLite database on your device, accessible only to Vibe. None of it is transmitted to our servers (because we don't have any).

2.1  Music Library Metadata Always collected

When you open Vibe, it scans Android's MediaStore to build your music library. The following song attributes are indexed and stored in a local database table (songs):

Field Source Why it's stored
titleID3 tag / MediaStoreDisplay name and lyrics API lookup
artistID3 tag / MediaStoreDisplay and lyrics API lookup
albumID3 tag / MediaStoreAlbum grouping and display
albumArtUriMediaStore (embedded art)Cover art display in UI
durationMsMediaStoreProgress bar and skip thresholds
contentUriMediaStoreStable reference for playback
year, trackNumber, genreID3 tagSorting and metadata display
isFavoriteApp-createdFavorites playlist membership
playCount, lastPlayedTimestampApp-createdTop Songs and Recent lists
lyricsEmbedded ID3 or fetched on-demandIn-app lyrics display (see §4.1)

Vibe only reads audio files. It does not access documents, photos, videos, contacts, or any other files on your device.

2.2  Listening Sessions (Journey Feature) Always collected

Every time you play a song — from your local library, an in-app stream, internet radio, or a track detected playing in Spotify (see §2.7) — Vibe creates a listening session record in its local database. These sessions power the Journey screen — your personal timeline, analytics (total listening time, mood breakdowns, peak hours, top songs), and mood-based discovery. Sessions shorter than 15 seconds are automatically discarded to filter out accidental taps and skips.

FieldTypePurpose
songIdForeign keyLinks to the song being played
startTimestampMsUnix timestamp (ms)When you started listening
endTimestampMsUnix timestamp (ms)When playback stopped
durationListenedMsMillisecondsActual time spent listening
latitude, longitudeGPS decimal degreesLocation tag — only if permission granted (see §2.3)
locationAccuracyFloat (metres)GPS accuracy indicator
locationNameText stringHuman-readable place name from on-device geocoding
moodUser-selected stringOptional mood you tag (Happy, Calm, Sad, etc.)
noteFree textOptional personal note you add

Your listening history never leaves your device. All analytics are computed locally. You can edit or delete any individual session from the Journey Timeline tab.

2.3  Location Data Optional — requires permission
📍

Location is entirely optional. If you deny the location permission, all Vibe features work normally — listening sessions are just recorded without coordinates.

When location permission is granted, each time you start a song Vibe:

  • Requests a single GPS reading from your device's location system
  • Caches the result for up to 60 seconds to minimise battery usage
  • Passes the coordinates to Android's built-in Geocoder for a human-readable place name — this runs entirely on-device with no external network call
  • Stores the latitude, longitude, accuracy, and place name in the local sessions table

Location data is never transmitted to any server. It is used solely to display your listening map and location statistics in the Journey screen. You can revoke location permission at any time in Android Settings. Previously stored coordinates remain in the local database until you clear app data or uninstall.

2.4  Mood Tags & Personal Notes User-initiated

From the Journey Timeline, you can optionally tag any listening session with a mood (Happy, Energetic, Calm, Sad, Focused, Nostalgic, Romantic, Angry) and add a free-text note. Vibe never infers, auto-assigns, or AI-generates moods — you always choose them explicitly.

Mood and note data is stored locally and used to power Timeline filtering and the Discover tab ("surface songs you've loved when feeling Calm"). It is never transmitted anywhere.

2.5  Tags & Playlists Always local

Custom tags you create (e.g., "Workout", "Late Night"), playlists you build, your Favorites list, and recently played / top songs lists are all stored locally. Your current playback queue, position in the song, shuffle mode, and repeat setting are persisted in device SharedPreferences so the app restores your exact state after being closed.

2.6  Audio Recordings (Recording Tool) Optional — requires permission

Vibe includes an optional audio recording tool accessible from the Explore screen. When you use it:

  • Audio is captured from your device microphone and saved as a file in Vibe's local storage
  • Each recording stores a timestamp, duration, trimming range, and an optional display name you provide
  • Recordings are never uploaded, transmitted, or shared automatically
  • You can trim, rename, and delete recordings entirely within the app

The RECORD_AUDIO permission is requested only when you open the Recording Tool for the first time. It does not allow Vibe to record audio in the background or without your explicit initiation.

2.7  Spotify Listening Detection Optional — requires notification access

Vibe can optionally log songs you play in the Spotify app into your local Journey, so your diary reflects listening that happens outside Vibe. This relies on Android's notification access, which you must enable manually in system settings — it is never granted automatically.

  • When enabled, Vibe reads the media notification Spotify posts while playing — specifically the track title, artist, album, and duration
  • It only ever reads notifications from the Spotify app; notifications from every other app are ignored
  • A listening session is created locally, exactly like in-app playback (with an optional location tag if you've granted location)
  • This runs entirely on-device — nothing read from notifications is transmitted anywhere, and Vibe does not connect to your Spotify account (no login, no credentials, no Spotify data downloaded)

You can turn this off at any time by revoking notification access in Settings → Apps → Special app access → Notification access.

🔐
Section 3
Android Permissions We Request

Below is every permission declared in Vibe's manifest, with the exact reason it is needed. Runtime permissions (those that show a system dialog) are only requested when you first access the feature that needs them — not on app launch.

READ_MEDIA_AUDIO
Read Music Files  ·  Android 13+

Scans your device storage for audio files to build your music library. Without this, the app cannot function.

READ_EXTERNAL_STORAGE
Storage Access  ·  Android 12 and below

Legacy equivalent of READ_MEDIA_AUDIO for older Android versions. Same purpose.

WRITE_EXTERNAL_STORAGE
Save Exported Audio  ·  Android 10 and below

Legacy permission used only on older Android versions to save files you create with the audio tools (recordings, trimmed ringtones, format-converted tracks) to shared storage. Not requested on Android 11+.

ACCESS_MEDIA_LOCATION
GPS Data in Media Files

Allows reading GPS coordinates embedded in audio file metadata (EXIF data). Distinct from live location collection.

ACCESS_FINE_LOCATION
Precise GPS Location  ·  Runtime, optional

Used only to tag listening sessions with your current location in the Journey feature. Requested at runtime only when you first enable this feature. Denying it has no effect on music playback.

ACCESS_COARSE_LOCATION
Approximate Location  ·  Runtime, optional

Fallback when GPS is unavailable. Used for the same listening session location feature.

RECORD_AUDIO
Microphone  ·  Runtime, optional

Used exclusively by the Audio Recording Tool. Requested only the first time you open that screen. Does not enable background recording.

INTERNET
Network Access

Required for the app's optional online features: fetching song lyrics (LRCLIB, with Lyrics.ovh as fallback), streaming music (Audius and Jamendo), browsing and playing internet radio (Radio-Browser and the stations' own stream servers), and loading Google AdMob advertisements (native cards, banners, and full-screen interstitials). See Section 4 for details on each.

FOREGROUND_SERVICE
Background Playback Service

Keeps the music player service running when you switch to another app or lock your screen. Required for the persistent media notification with playback controls.

FOREGROUND_SERVICE_MEDIA_PLAYBACK
Media Playback Service Type  ·  Android 14+

Declares the playback foreground service specifically as a media-playback service, as required on Android 14 and above. Same purpose as FOREGROUND_SERVICE.

WAKE_LOCK
Prevent CPU Sleep During Playback

Prevents the device's CPU from sleeping mid-track, which would cause audio to cut out. Released automatically when playback stops.

POST_NOTIFICATIONS
Media Controls Notification  ·  Android 13+, Runtime

Displays the playback notification with track info and controls in the notification shade and lock screen.

MODIFY_AUDIO_SETTINGS
Audio Focus Management

Allows Vibe to request audio focus so it pauses automatically when a phone call, navigation prompt, or another app needs audio. Releases focus when you pause.

WRITE_SETTINGS
Set as Ringtone  ·  Special access, optional

Requested only when you use the Ringtone Maker tool to set a trimmed clip as your ringtone, notification, or alarm sound. You grant it manually in system settings; it is used for nothing else.

NOTIFICATION ACCESS
Spotify Listening Detection  ·  Special access, optional

Only if you enable it, this lets Vibe read Spotify's media notification to log what you're playing into your local Journey (see §2.7). It reads only Spotify's notifications, works entirely on-device, and is granted manually in system settings.

🔗
Section 4
Third-Party Services

Vibe uses the external services listed below. No analytics SDK, crash reporter, A/B testing library, or user-tracking framework is embedded beyond what is listed here. None of these services receive your listening history, location, mood entries, or notes — only the minimum each feature needs, described per service.

Lyrics — LRCLIB & Lyrics.ovh
Lyrics · Optional · On-demand

When you tap to view lyrics for a song and they are not embedded in the audio file itself, Vibe queries LRCLIB first (it returns synced and plain lyrics); if no match is found, it falls back to the Lyrics.ovh public API.

What is sentWhat is receivedWhen it happens
Song title and artist (both providers); album name and track duration (LRCLIB only, to improve match accuracy); your IP address (inherent to any web request) Lyrics text (synced or plain) Only when you tap to view lyrics and no embedded lyrics exist in the file

No personal data, location, mood data, device identifiers, or listening history is transmitted. Fetched lyrics are cached locally in the songs database table to avoid repeat network requests for the same song.

Both are free public APIs and Vibe is not affiliated with either — LRCLIB and Lyrics.ovh.

Music Streaming — Audius & Jamendo
Streaming · Optional · On-demand

Vibe can search and stream independent / royalty-free music from Audius (no account or key required) and, when a free developer key is configured, Jamendo. This only happens when you open the streaming library and search for or play a track.

What is sentWhat is receivedWhen it happens
Your search text and the selected track ID; your IP address (inherent to any web request) Track metadata and the audio stream Only when you search or play a track in the streaming library

No personal data, location, mood data, or listening history is sent. Audio streams directly from each provider's servers. Vibe is not affiliated with Audius or Jamendo; their use is governed by their own privacy policies (Audius, Jamendo).

Internet Radio — Radio-Browser
Radio · Optional · On-demand

The radio feature uses the community-run Radio-Browser directory to search and list stations. When you play a station, audio streams directly from that station's own broadcast server (a third party operated by the broadcaster, not by Vibe).

What is sentWhat is receivedWhen it happens
Your station search/filter terms; your IP address (to Radio-Browser and to the station's stream server) Station listings and the live audio stream Only when you browse or play internet radio

No personal data, location, mood data, or listening history is sent. Station stream servers are operated by third-party broadcasters under their own policies, and Vibe does not control their content. Radio-Browser is a free community service (radio-browser.info).

Google AdMob
Advertising · Automatic when app is open

Vibe displays advertisements served by Google AdMob in three formats: native ads embedded as cards within song, artist, and library lists; banner ads within grid-based browse screens (albums, genres); and a full-screen interstitial ad when you open the Tools screen (rate-limited so it appears at most once every 90 seconds). Native ads are styled to match the app's design but are always labelled with an "Ad" badge and Google's AdChoices icon. Advertising revenue helps support continued development of the app. When AdMob is active, Google may collect the following device-level information to serve ads:

  • Android Advertising ID (GAID) — used to serve relevant ads and limit ad frequency
  • Device make, model, and Android OS version
  • App version and bundle identifier
  • Device locale (language/region) and timezone
  • Network connectivity type (WiFi or cellular)
  • IP address (used by Google for general geographic ad targeting)
⚠️

Google AdMob is governed by Google's Privacy Policy, available at policies.google.com/privacy. You can opt out of personalised ads on Android by navigating to Settings → Google → Ads → Delete advertising ID.

We do not share your listening history, location data, mood entries, notes, or any content from Vibe's local database with Google AdMob. Ad targeting is based solely on device-level information that Google collects independently through its SDK.

🔒
Section 5
Data Storage & Security
Where your data lives

All Vibe data — listening sessions, playlists, tags, mood entries, personal notes, and song index — is stored in a private SQLite database on your device (vibe_database) in Vibe's protected internal storage directory. This directory is not accessible to other apps and is not included in Android's shared storage.

Cloud backup

Vibe explicitly opts out of Android's Auto Backup feature. Your Vibe data is not synced to your Google Account, not included in device-to-device transfers, and not backed up to any cloud service. This is an intentional privacy decision. It also means that if you switch devices or reinstall the app, your listening history will not be restored.

Encryption

Vibe's database uses standard SQLite storage without an additional application-layer encryption wrapper. Your device's own full-disk or file-based encryption (enabled automatically when you set a screen lock on Android 10+) protects all app data from physical access. We recommend keeping a screen lock enabled on your device.

Data retention

Your data persists in the Vibe database for as long as the app is installed. There is no automatic expiration. You have full control: individual listening sessions can be deleted from the Journey Timeline. All data is permanently and completely deleted when you uninstall the app or use Settings → Apps → Vibe → Storage → Clear Data.

⚙️
Section 6
Your Rights & Controls

Because all Vibe data is stored locally on your device, you have complete and immediate control over it without needing to contact us.

✏️
Edit any session
Add, edit, or remove mood tags and notes from any listening session in the Journey Timeline.
🗑️
Delete sessions
Remove individual sessions from the Journey Timeline, or clear all app data via Android Settings.
📍
Revoke location
Revoke location permission anytime in Android Settings. Future sessions won't include GPS data.
🎙️
Revoke recording
Revoke RECORD_AUDIO permission in Settings. The Recording Tool will be disabled immediately.
📢
Opt out of personalised ads
On Android: Settings → Google → Ads → Delete advertising ID. Non-personalised ads will still be shown.
🚫
Full deletion
Uninstalling Vibe permanently removes all app data from your device. No residual data is retained on any server.
🧒
Section 7
Children's Privacy

Vibe is intended for users aged 18 and over and is not directed at children. It provides access to streaming music, internet radio, and lyrics from third-party sources whose content is not curated or age-rated by Vibe. We do not knowingly collect personally identifiable information from anyone, and have no mechanism to verify a user's age (since the app requires no account).

If you are a parent or guardian and have concerns about data stored by Vibe on your child's device, you can clear it by going to Settings → Apps → Vibe → Storage → Clear Data on their Android device.

If you believe your child has been subject to any privacy concern through use of this app, please contact us at the address in Section 9.

📣
Section 8
Changes to This Policy

We may update this Privacy Policy when Vibe adds new features, integrates new services, or when legal requirements change. When we do, we will update the Effective Date at the top of this document and post the updated version at this same URL.

For material changes — such as adding a new third-party service, changing how location data is used, or altering data retention practices — we will additionally notify you via an in-app banner on the next app launch after the change takes effect.

Continued use of the app after an updated policy is posted constitutes acceptance of the changes. If you disagree with any change, you can stop using the app and delete all local data by uninstalling it.

Questions or Concerns?

If you have questions about this Privacy Policy, how Vibe handles your data, or want to report a privacy concern, we'd like to hear from you.

✉️ scatterbraindev@gmail.com