A modern Android music player built with Kotlin and Jetpack Compose. Neon scans your device's local audio library, delivers a sleek playback experience, and provides comprehensive playlist and favorite management.
- 🎧 Local Music Library Scanner — Uses Android MediaStore to discover all audio files on your device
- 🔍 Smart Search & Filter — Find songs by title, artist, or album
- 📋 Playlist Management — Create, customize, add, and delete playlists
- ❤️ Favorites Support — Save your favorite songs with persistent storage via Room database
- 🎼 Dual Player Interface — Mini-player on library screen + full immersive overlay player
- ⏯️ Playback Controls — Play/pause, next, previous, seek, shuffle, and repeat modes
- 🎨 Animated UI — Rotating vinyl disc visualization and dynamic waveform display
- ⏰ Sleep Timer — Set automatic playback stop after a selected duration
- 🔔 Foreground Service — Persistent playback with system notification media controls
- 🔐 Runtime Permissions — Secure audio access and notification permissions handling
| Component | Description |
|---|---|
| MainActivity.kt | App entry point with splash screen and library navigation |
| MusicViewModel.kt | State management, audio scanning, playback control, and playlist/favorite actions |
| MusicRepository.kt | Handles MediaStore queries and Room database persistence |
| MusicPlayerController.kt | Core playback engine with shuffle, repeat, queue management, and progress tracking |
| MusicService.kt | Foreground service for persistent playback and system media controls |
| UI Screens | Located in app/src/main/java/com/example/ui/screens/ |
| Screen | Purpose |
|---|---|
| SplashScreen | Launch animation before opening the library |
| LibraryScreen | Browse songs, manage playlists, view favorites, search, and access mini-player |
| PlayerScreen | Full-screen player with rich visual controls and animations |
- Clone & Open — Open the project in Android Studio
- Sync Gradle — Ensure Gradle syncs and Android SDK is configured
- Grant Permissions — Allow audio and notification permissions when prompted
- Run — Execute on a device or emulator with local audio files
Music_player/
├── app/
│ ├── src/main/java/com/example/
│ │ ├── MainActivity.kt
│ │ ├── MusicViewModel.kt
│ │ ├── MusicRepository.kt
│ │ ├── MusicPlayerController.kt
│ │ ├── MusicService.kt
│ │ └── ui/screens/
│ └── src/main/res/
└── gradle/
- Local Playback Only — This app is designed for local audio files and does not include online streaming
- Permissions Required — Device and media permissions are necessary to scan and play audio files
- Room Database — Playlists and favorites are persisted locally on the device
- Language — Kotlin 100%
- UI Framework — Jetpack Compose
- Architecture — MVVM (Model-View-ViewModel)
- Database — Room
- Audio — Android MediaStore & MediaPlayer
- Services — Foreground Service for background playback
This is a basic Android mobile application project.
Happy Listening! 🎶