How the-jddev/shs-player works
SHS Player is an Android multimedia app centered on browsing local media and playing video or audio through LibVLC. The main route starts in the app, synchronizes device media, presents the library, then opens the player; playback state and library data are persisted through the data and database layers. Separate product branches cover music, IPTV, the privacy vault, Wi-Fi transfer and QR sharing, downloading, and settings. The README documents these capabilities, while the sampled source is limited, so uncertain links between unsampled feature screens and services are omitted.
Main entry points: MediaNavGraph.kt Media Navigation · MediaPlayerScreen.kt Player Interface · LocalMediaRepository.kt Media Repository · MainActivity.kt App Entry
Components 22
App and Library
- App Entry
app/src/main/java/dev/anilbeesetti/nextplayer/MainActivity.kt - Media Navigation
app/src/main/java/dev/anilbeesetti/nextplayer/navigation/MediaNavGraph.kt - Music Library
app/src/main/java/dev/anilbeesetti/nextplayer/ui/MusicScreen.kt - Media Selection
feature/videopicker/src/main/java/dev/anilbeesetti/nextplayer/feature/videopicker/state/SelectionManager.kt
Playback
- Player Interface
feature/player/src/main/java/dev/anilbeesetti/nextplayer/feature/player/MediaPlayerScreen.kt - Player State
feature/player/src/main/java/dev/anilbeesetti/nextplayer/feature/player/PlayerViewModel.kt - VLC Adapter
feature/player/src/main/java/dev/anilbeesetti/nextplayer/feature/player/engine/VlcPlayerAdapter.kt - VLC Engine
feature/player/src/main/java/dev/anilbeesetti/nextplayer/feature/player/engine/VlcPlayerEngine.kt - Background Playback
feature/player/src/main/java/dev/anilbeesetti/nextplayer/feature/player/engine/VlcPlaybackService.kt
Media and Preferences
- Media Sync
core/media/src/main/java/dev/anilbeesetti/nextplayer/core/media/sync/LocalMediaSynchronizer.kt - Device Media
core/media/src/main/java/dev/anilbeesetti/nextplayer/core/media/services/LocalMediaService.kt - Media Repository
core/data/src/main/java/dev/anilbeesetti/nextplayer/core/data/repository/LocalMediaRepository.kt - Media Database
core/database/src/main/java/dev/anilbeesetti/nextplayer/core/database/MediaDatabase.kt - Preferences Store
core/data/src/main/java/dev/anilbeesetti/nextplayer/core/data/repository/LocalPreferencesRepository.kt - DataStore
core/datastore/src/main/java/dev/anilbeesetti/nextplayer/core/datastore/datasource/PreferencesDataSource.kt
Sharing and Extras
- Live TV
app/src/main/java/dev/anilbeesetti/nextplayer/ui/tv/WatchTvScreen.kt - Privacy Vault
app/src/main/java/dev/anilbeesetti/nextplayer/ui/PrivacyFolderScreen.kt - File Transfer
app/src/main/java/dev/anilbeesetti/nextplayer/ui/FileTransferScreen.kt - QR Sharing
app/src/main/java/dev/anilbeesetti/nextplayer/ui/QrScannerScreen.kt - Stream Downloader
feature/player/src/main/java/dev/anilbeesetti/nextplayer/feature/player/download/UniversalDownloader.kt
Settings
- Settings Screens
feature/settings/src/main/java/dev/anilbeesetti/nextplayer/settings/SettingsScreen.kt
Other components
- User
Connections 22
- User → App Entry: opens app
- App Entry → Media Sync: starts sync
- App Entry → Media Navigation: shows media
- Media Navigation → Media Repository: loads library
- Media Navigation → Media Selection: selects media
- Media Sync → Device Media: scans device
- Media Repository → Media Database: reads and writes
- Media Navigation → Player Interface: opens playback
- Music Library → Media Repository: loads media
- Player Interface → Player State: sends playback actions
- Player State → VLC Adapter: controls player
- VLC Adapter → VLC Engine: delegates playback
- VLC Engine → Background Playback: supports service playback
- Player Interface → Media Repository: stores playback state
- Media Navigation → Live TV: opens live TV
- Media Navigation → Privacy Vault: opens vault
- Media Navigation → File Transfer: opens transfer
- File Transfer → QR Sharing: uses QR sharing
- Player Interface → Stream Downloader: downloads stream
- Media Navigation → Settings Screens: opens settings
- Settings Screens → Preferences Store: updates preferences
- Preferences Store → DataStore: persists settings