VIVI Music connects directly to the YouTube and YouTube Music catalogs, bypassing all advertisements and letting you stream any track, album, or playlist without interruption. The app runs as a persistentDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/vivizzz007/vivi-music/llms.txt
Use this file to discover all available pages before exploring further.
MediaLibraryService in the background, so music keeps playing while you use other apps or lock your screen, complete with full media notification controls. An optional JioSaavn integration provides an alternative streaming source with its own audio quality tiers, useful in regions where YouTube quality is inconsistent.
Ad-Free Streaming
Full YouTube and YouTube Music catalogs with zero advertisements at any quality tier.
Background Playback
Continues playing when the screen is off or you switch apps, with rich notification controls.
Google Cast
Cast to any Chromecast or Google Cast device (GMS build only).
Sleep Timer
Auto-pause after a set number of minutes or at the end of the current song.
Crossfade
Smooth transitions between tracks with configurable duration and gapless mode.
JioSaavn Source
Alternative high-quality audio stream from JioSaavn when enabled.
Audio Normalization
Levels out loudness differences between tracks automatically.
Persistent Queue
Your queue survives app restarts and is restored on next launch.
Audio Quality
VIVI Music exposes a three-tier audio quality selector stored underAudioQualityKey. The choice is applied at stream resolution time, so switching it takes effect from the next track.
- AUTO
- HIGH
- LOW
VIVI selects the highest quality stream that the current network conditions can support without buffering. This is the recommended default for most users.Preference key:
AudioQualityKey → AudioQuality.AUTOJioSaavn Streaming
JioSaavn is an alternative audio delivery backend that VIVI Music can query whenEnableSaavnStreamingKey is turned on. It offers three fixed bitrate tiers:
- High (320 kbps)
- Medium (160 kbps)
- Low (96 kbps)
Maximum quality from JioSaavn. Corresponds to
SaavnAudioQuality.QUALITY_320.Preference key: SaavnAudioQualityKey → QUALITY_320Background Playback & Notification Controls
VIVI’sMusicService extends MediaLibraryService (Media3), which means:
- Playback continues when the screen turns off or you switch to another app.
- A persistent media notification shows the current track, artwork, and playback controls.
- Android Auto and other media session clients can control VIVI natively.
- The
PersistentQueueKeypreference (default:true) saves your queue to disk on each change, so it is fully restored if the app is killed and restarted.
Google Cast
Google Cast is only available in the GMS (Google Mobile Services) build of VIVI Music. The F-Droid / FOSS build omits the Cast SDK entirely — the setting is hidden when
BuildConfig.CAST_AVAILABLE is false.EnableGoogleCastKey). Once enabled, a Cast button appears in the top bar whenever a compatible device is on the same network.
Crossfade
Crossfade blends the end of one track into the beginning of the next. Because it interacts with the ExoPlayer pipeline, it is marked as a beta feature and shows a confirmation dialog before being enabled.| Preference key | Type | Default | Description |
|---|---|---|---|
CrossfadeEnabledKey | Boolean | false | Master toggle for crossfade |
CrossfadeDurationKey | Float (seconds) | 5f | Overlap length — 1 to 15 seconds |
CrossfadeGaplessKey | Boolean | true | When on, eliminates silence at the track boundary before fading |
Audio offload (
AudioOffload) is automatically disabled while crossfade is active, as the two features are mutually exclusive in the ExoPlayer pipeline.Skip Silence
| Preference key | Default | Description |
|---|---|---|
SkipSilenceKey | false | Skips over silent passages within a track |
SkipSilenceInstantKey | false | When enabled alongside SkipSilenceKey, jumps instantly without a brief fade |
Audio Normalization
AudioNormalizationKey (default: true) enables ReplayGain-style loudness normalisation across tracks. This evens out volume differences between songs encoded at different levels without requiring you to adjust the volume manually.
Audio Offload
AudioOffload (preference key enableOffload, default: false) offloads audio decoding to dedicated hardware when the device supports it. This significantly reduces CPU usage and extends battery life during long listening sessions. It is automatically disabled when crossfade is active.
Sleep Timer
TheSleepTimer class integrates directly with the ExoPlayer Player interface. You can activate it from the player screen:
- Timed sleep — choose a duration in minutes; playback pauses when the countdown reaches zero.
- End-of-song sleep — sets
pauseWhenSongEnd = true; playback pauses when the current track finishes, with no countdown required.
Auto-Load More
AutoLoadMoreKey (default: true) tells VIVI to automatically append related tracks to the queue when it reaches the last song. Combined with DisableLoadMoreWhenRepeatAllKey, you can prevent this behaviour while a repeat-all loop is active.
Network IP Version
IpVersionKey controls how the network stack resolves hostnames for stream requests:
| Value | Behaviour |
|---|---|
IpVersion.AUTO | System default — uses whatever address the DNS returns first |
IpVersion.IPV4 | Prefers IPv4 addresses, falls back to all addresses if none found |
IpVersion.IPV6 | Prefers IPv6 addresses, falls back to all addresses if none found |