An offline music player for Android with a Neo-Brutalist design. Plays local audio files — no streaming, no internet required.
- Plays local audio files from device storage
- Playlists and favorites
- Synced lyrics (LRC file support)
- Album art display
- Equalizer with presets
- Playback speed control
- Crossfade between tracks
- Sleep timer
- Home screen widget
- Search across your library
- Kotlin
- Jetpack Compose (UI)
- Hilt (dependency injection)
- Room (local database)
- ExoPlayer / MediaSession (audio engine)
- Material 3
Min SDK: Android 7.0 (API 24)
Target SDK: Android 14 (API 34)
- Android Studio Hedgehog or newer
- JDK 17
- Android SDK with API 34
- Clone the repository:
git clone https://github.com/4shil/Musicya.git-
Open the project in Android Studio.
-
Sync Gradle dependencies.
-
Run on a device or emulator (API 24+).
./gradlew assembleDebugThe APK will be at app/build/outputs/apk/debug/app-debug.apk.
app/src/main/java/com/fourshil/musicya/
├── data/
│ ├── db/ # Room entities and DAO (Song, Playlist, Favorites, History)
│ ├── model/ # Data models
│ └── repository/ # MusicRepository, paging source
├── di/ # Hilt modules
├── player/ # Audio engine, crossfade, sleep timer, playback speed
├── ui/
│ ├── theme/ # Colors, typography, dimensions
│ ├── settings/ # Settings and equalizer screens
│ ├── search/ # Search screen and ViewModel
│ └── widget/ # Home screen widget
└── util/ # Lyrics parser, album art helpers
READ_MEDIA_AUDIO— to read audio files from device storageFOREGROUND_SERVICE— to keep playback running in the backgroundRECEIVE_BOOT_COMPLETED— to restore widget state on reboot
MIT
