A beautiful, feature-rich music player for Android
Built with Jetpack Compose and Material Design 3
- Material You - Dynamic color theming that adapts to your wallpaper
- Smooth Animations - Fluid transitions and micro-interactions
- Customizable UI - Adjustable corner radius and navigation bar settings
- Dark/Light Theme - Automatic or manual theme switching
- Album Art Colors - Dynamic color extraction from album artwork
- Media3 ExoPlayer - Industry-leading audio engine with FFmpeg support
- Background Playback - Full media session integration
- Queue Management - Drag-and-drop reordering
- Shuffle & Repeat - All playback modes supported
- Gapless Playback - Seamless transitions between tracks
- Custom Transitions - Configure crossfades between songs
- Multi-format Support - MP3, FLAC, AAC, OGG, WAV, and more
- Browse By - Songs, Albums, Artists, Genres, Folders
- Smart Artist Parsing - Configurable delimiters for multi-artist tracks
- Album Artist Grouping - Proper album organization
- Folder Filtering - Choose which directories to scan
- Full-text Search - Search across your entire library
- Daily Mix - AI-powered personalized playlist based on listening habits
- Playlists - Create and manage custom playlists
- Statistics - Track your listening history and habits
- Synchronized Lyrics - LRC format via LRCLIB API
- Lyrics Editing - Modify or add lyrics to your tracks
- Scrolling Display - Follow along as you listen
- Deezer Integration - Automatic artist images from Deezer API
- Smart Caching - Memory (LRU) + database caching for offline access
- Fallback Icons - Beautiful placeholders when images unavailable
- Chromecast - Stream to your TV or smart speakers
- Android Auto - Full Android Auto support for in-car playback
- Widgets - Home screen control with Glance widgets
- Tag Editor - Edit metadata with TagLib (MP3, FLAC, M4A support)
- AI Playlists - Generate playlists with Gemini AI
- Audio Waveforms - Visual representation with Amplituda
| Category | Technology |
|---|---|
| Language | Kotlin 100% |
| UI Framework | Jetpack Compose |
| Design System | Material Design 3 |
| Audio Engine | Media3 ExoPlayer + FFmpeg |
| Architecture | MVVM with StateFlow/SharedFlow |
| DI | Hilt |
| Database | Room |
| Networking | Retrofit + OkHttp |
| Image Loading | Coil |
| Async | Kotlin Coroutines & Flow |
| Background Tasks | WorkManager |
| Metadata | TagLib |
| Widgets | Glance |
- Android 10 (API 29) or higher
- 4GB RAM recommended for smooth performance
- Android Studio Ladybug | 2024.2.1 or newer
- Android SDK 29+
- JDK 11+
-
Clone the repository
git clone https://github.com/theovilardo/PixelPlayer.git
-
Open in Android Studio
- Open Android Studio
- Select "Open an Existing Project"
- Navigate to the cloned directory
-
Sync and Build
- Wait for Gradle to sync dependencies
- Build the project (Build β Make Project)
-
Run
- Connect a device or start an emulator
- Click Run (
βΆοΈ )
app/src/main/java/com/theveloper/pixelplay/
βββ data/
β βββ database/ # Room entities, DAOs, migrations
β βββ model/ # Domain models (Song, Album, Artist, etc.)
β βββ network/ # API services (LRCLIB, Deezer)
β βββ preferences/ # DataStore preferences
β βββ repository/ # Data repositories
β βββ service/ # MusicService, HTTP server
β βββ worker/ # WorkManager sync workers
βββ di/ # Hilt dependency injection modules
βββ presentation/
β βββ components/ # Reusable Compose components
β βββ navigation/ # Navigation graph
β βββ screens/ # Screen composables
β βββ viewmodel/ # ViewModels
βββ ui/
β βββ glancewidget/ # Home screen widgets
β βββ theme/ # Colors, typography, theming
βββ utils/ # Extensions and utilities
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Made with β€οΈ by theovilardo