How qosam217/qmplayer works
QMPlayer is an Android music-player app. The evident user journey starts at the app’s home UI, where users can browse a song library and manage playlists and tags; the repository also includes a playback UI and song metadata support. The data layer separates device-media access from locally persisted playlists, tags, and metadata. The README only identifies manual dependency injection as current practice. Most feature wiring and playback behavior were not sampled, so uncertain calls between UI features, DI, and services are omitted.
Main entry points: QMPlayerDatabase.kt Room database · SongRepositoryImpl.kt Song repository · PlaylistRepositoryImpl.kt Playlist repository · TagRepositoryImpl.kt Tag repository
Components 20
App and navigation
- Main activity
app/src/main/java/com/project/qmplayer/MainActivity.kt - Home UI
app/src/main/java/com/project/qmplayer/core/ui/components/HomeScreen.kt - App navigation
app/src/main/java/com/project/qmplayer/core/navigation/AppNavigation.kt
Music features
- Song library
app/src/main/java/com/project/qmplayer/feature/library/LibraryViewModel.kt - Playback UI
app/src/main/java/com/project/qmplayer/feature/player/PlayerViewModel.kt - Playlists
app/src/main/java/com/project/qmplayer/feature/playlist/PlaylistViewModel.kt - Tags
app/src/main/java/com/project/qmplayer/feature/tag/TagViewModel.kt - Song metadata
app/src/main/java/com/project/qmplayer/domain/model/SongMetaData.kt
Data access
- Song repository
app/src/main/java/com/project/qmplayer/data/repository/SongRepositoryImpl.kt - MediaStore source
app/src/main/java/com/project/qmplayer/data/media/MediaStoreDataSource.kt - Playlist repository
app/src/main/java/com/project/qmplayer/data/repository/PlaylistRepositoryImpl.kt - Tag repository
app/src/main/java/com/project/qmplayer/data/repository/TagRepositoryImpl.kt - Metadata repository
app/src/main/java/com/project/qmplayer/data/repository/SongMetaDataRepositoryImpl.kt - Room database
app/src/main/java/com/project/qmplayer/data/local/database/QMPlayerDatabase.kt
Domain contracts
- Song contract
app/src/main/java/com/project/qmplayer/domain/repository/SongRepository.kt - Playlist contract
app/src/main/java/com/project/qmplayer/domain/repository/PlaylistRepository.kt - Tag contract
app/src/main/java/com/project/qmplayer/domain/repository/TagRepository.kt - Metadata contract
app/src/main/java/com/project/qmplayer/domain/repository/SongMetaDataRepository.kt
Other components
- User
- Android media library
Connections 11
- User → Main activity: opens app
- Main activity → Home UI: sets content
- Song repository → MediaStore source: reads songs
- MediaStore source → Android media library: queries media
- Playlist repository → Room database: reads and writes
- Tag repository → Room database: reads and writes
- Metadata repository → Room database: reads and writes
- Song repository → Song contract: implements
- Playlist repository → Playlist contract: implements
- Tag repository → Tag contract: implements
- Metadata repository → Metadata contract: implements