About this project
NeriPlayer is a native Android audio player built with Jetpack Compose and Media3, supporting Android 9 (API 28) and above. The project is positioned as "multi-source exploration, online playback, local control, and data self-ownership," and does not provide public cloud music libraries or media distribution services. Online capabilities rely on user account authorization on third-party platforms.
Key features include:
- Multi-source online playback: Integrates NetEase Cloud Music, Bilibili, and YouTube Music, supporting search, playlists, favorites, albums, artist details, and other entry points, along with source resolution, queue management, and failure recovery. When NetEase Cloud Music lacks permissions or only returns preview clips, it attempts quality degradation and can match Bilibili or local audio as fallback based on settings.
- Local-first data: Playback cache, downloaded files, playlists, history, playback statistics, and settings are saved locally on the device by default; platform cookies, GitHub tokens, WebDAV passwords, etc., are encrypted using Android Keystore and EncryptedSharedPreferences.
- Optional self-hosted sync: Local playlists, favorites, recent plays, playback statistics, and other metadata can be synced to the user's own GitHub repository or WebDAV remote files, using WorkManager for delayed and periodic sync, with three-way merge for conflict resolution.
- Lyrics experience: Supports line-by-line, word-by-word/character-by-character LRC, YRC/TTML lyrics with highlighting, translation, transliteration, offset, tap-to-jump, long-press sharing, and lyrics card generation; includes a lyrics editor, can integrate external sources like LRCLIB, and supports floating lyrics, status bar lyrics, SuperLyric, Lyricon, and Bluetooth lyrics output.
- Playback and audio effects: Based on Media3 ExoPlayer, supports playback speed, pitch, equalizer, loudness enhancement, fade in/out, crossfade, Bluetooth disconnect pause, audio focus policy, and USB exclusive playback for UAC1.0 and compatible UAC2.0 Type I PCM devices.
- Download and local management: In-app downloads support multi-platform audio, task progress, cancel/retry, and resumable downloads (handled separately for direct HTTP, chunked Range, and HLS), with default concurrency of 6 and maximum of 8; supports SAF custom download directories and filename templates; local audio can be imported via external sharing, device scanning, or authorized folder scanning, with recognition of nearby lyrics and cover files.
- Listen together: Provides room, role, queue, playback state, and loop/random mode synchronization via Cloudflare Workers and Durable Objects, supporting invite links, deep link joining, custom servers, and host offline recovery.
- Diagnostics and recovery: Provides safe mode, crash logs, ANR records, developer mode debugging probes, and storage usage grouped statistics with cleanup of regenerable cache.
The project uses a single Activity + Compose architecture, with the main interface organized by NavHost and a dynamic bottom bar, and the player page as an overlay full-screen layer with a persistent Mini Player. The repository includes settings item KSP auto-registration, lyrics parsing and UI submodules, and a listen-together service submodule. The project is declared for learning and research purposes only and does not provide media content, keys, or solutions to circumvent platform restrictions.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.