A free media player for Android. This app can play both audio and video files.
This is a work in progress. Any contribution or feedback would be greatly appreciated.
Bottom.Nav.mp4
Folders.Screen.mp4
Files.Browser.mp4
Music.Player.mp4
Video.Player.mp4
Landscaped.Video.Player.mp4
Active.Playlist.Reorder.mp4
Active.Playlist.Swipe.mp4
Notification.Media.Controller.mp4
Widget.Media.Controller.mp4
Dark.Light.Mode.switch.mp4
Dynamic.Colors.theme.mp4
data: All classes belonging to the data layer should go here. The types of class in this package are Repository, Repository Manager, DataSource, Room classes (Dao, @Entity
, Database, etc.), DataStore, Worker, etc.
domain: All UseCase classes should go here.
hilt: All Hilt configuration classes such as Module should go here.
service: All services should go here.
ui: All Activity, Fragment, ViewModel, or Widget should go here.
- The app heavily follows Google's guide to app achitecture https://developer.android.com/topic/architecture?hl=en. All of the layers are separated.
- For the Audio and Video players, the app also use the Google guide to Media app architecture https://developer.android.com/guide/topics/media-apps/media-apps-overview.
- Media files and metadata relies on Android's MediaStore.
- For simple screens, databinding and simple callbacks are used.
- For complicated screens with lots of actions, such as the Video player, MVI is used to model user actions AND actions coming from the data layer.
The app heavily relies on Material 3 for theming purposes.
I try my best to provide adequate Unit and instrumented tests if I have time.