How xing1p/pixelmusic works
Pixel Music is an Android hybrid music player: users browse a library or streaming source, select music, and control playback through a persistent media service. The map includes the documented local, YouTube, Telegram and Drive sources, plus lyrics, AI curation, backup, and device integrations. README capabilities help identify these branches; sampled excerpts confirm the playback engine’s URI resolution and some service integrations, but do not expose all wiring, so uncertain connections are omitted.
Main entry points: MusicService.kt Music service · MainActivity.kt App interface · DualPlayerEngine.kt Dual player · AiOrchestrator.kt AI music tools
Components 22
App and playback
- App interface
app/src/main/java/com/unshoo/pixelmusic/MainActivity.kt - Music service
app/src/main/java/com/unshoo/pixelmusic/data/service/MusicService.kt - Dual player
app/src/main/java/com/unshoo/pixelmusic/data/service/player/DualPlayerEngine.kt
Music sources
- Local library
app/src/main/java/com/unshoo/pixelmusic/data/repository/MediaStoreSongRepository.kt - YouTube music
app/src/main/java/com/unshoo/pixelmusic/data/remote/youtube/SongRepository.kt - Telegram music
app/src/main/java/com/unshoo/pixelmusic/data/telegram/TelegramRepository.kt - Drive music
app/src/main/java/com/unshoo/pixelmusic/data/gdrive/GDriveRepository.kt
Library and state
- Music database
app/src/main/java/com/unshoo/pixelmusic/data/database/PixelMusicDatabase.kt - User preferences
app/src/main/java/com/unshoo/pixelmusic/data/preferences/UserPreferencesRepository.kt
Music features
- Lyrics retrieval
app/src/main/java/com/unshoo/pixelmusic/data/repository/LyricsRepositoryImpl.kt - LRCLIB
app/src/main/java/com/unshoo/pixelmusic/data/network/lyrics/LrcLibApiService.kt - Equalizer
app/src/main/java/com/unshoo/pixelmusic/data/equalizer/EqualizerManager.kt - AI music tools
app/src/main/java/com/unshoo/pixelmusic/data/ai/AiOrchestrator.kt - AI providers
app/src/main/java/com/unshoo/pixelmusic/data/ai/provider/AiClientFactory.kt - Backup and restore
app/src/main/java/com/unshoo/pixelmusic/data/backup/BackupManager.kt
Device and cloud
- Cast playback
app/src/main/java/com/unshoo/pixelmusic/data/service/player/CastPlayer.kt - Android Auto
app/src/main/java/com/unshoo/pixelmusic/data/service/auto/AutoMediaBrowseTree.kt - Wear transfer
app/src/main/java/com/unshoo/pixelmusic/data/service/wear/PhoneDirectWatchTransferCoordinator.kt - Wear companion
wear/src/main/java/com/unshoo/pixelmusic/data/WearDataListenerService.kt - Cast media server
app/src/main/java/com/unshoo/pixelmusic/data/service/http/MediaFileHttpServerService.kt - Last.fm scrobbling
app/src/main/java/com/unshoo/pixelmusic/data/lastfm/ScrobbleManager.kt
Other components
- Listener
Connections 26
- Listener → App interface: browses and selects
- App interface → Music service: controls playback
- Music service → Dual player: manages playback
- Local library → Music database: indexes library
- Music service → Local library: loads local tracks
- Music service → YouTube music: requests streams
- Music service → Telegram music: resolves streams
- Music service → Drive music: resolves streams
- Dual player → YouTube music: resolves YouTube URIs
- Dual player → Telegram music: resolves Telegram URIs
- Dual player → Drive music: resolves Drive URIs
- Music service → Lyrics retrieval: loads lyrics
- Lyrics retrieval → LRCLIB: fetches lyrics
- Music service → Equalizer: applies audio effects
- App interface → AI music tools: requests music curation
- AI music tools → AI providers: generates results
- AI music tools → Music database: uses music context
- App interface → Backup and restore: manages backup
- Backup and restore → Music database: backs up and restores data
- Music service → Cast playback: routes playback
- Cast playback → Cast media server: serves cast media
- Music service → Android Auto: provides browse tree
- Music service → Wear transfer: publishes playback state
- Wear transfer → Wear companion: transfers state and audio
- Music service → Last.fm scrobbling: reports listening
- App interface → User preferences: reads and updates