Music Player is an Android application created for playing with Jetpack Compose framework and ExoPlayer.
- Kotlin based
- ExoPlayer for playing multimedia files
- Coroutines for asynchronous.
- JetPack
- Compose - Modern toolkit for building native UI.
- Lifecycle - Create a UI that automatically responds to lifecycle events.
- LiveData - Notify domain layer data to views.
- Navigation - Handle everything needed for in-app navigation.
- ViewModel - UI related data holder, lifecycle aware.
- Hilt - For dependency injection.
- Coil - An image loading library for Android backed by Kotlin Coroutines.
- Pallete API
- Firebase - Firestore Database and Storage
- Jetpack Compose UI. Custom animations, transiations, light/dark theme and layouts.
- Jetpack Compose Navigation
- MVVM Architecutre
- Dependency injection with Hilt
- Retrieves songs metadata from the network specifically from firebase
- Allows background playback using a foreground service
- Media style notifications
- Uses a MediaBrowserService to control and expose the current media session
- Controls the current playback state with actions such as: play/pause, swipe bottom bar to skip next/previous, skip to next/previous, shuffle, repeat and stop