A LaatonWalaBhoot creation... Play Music from the Itunes Store
- Room - for SQLite database abstraction. Performing database transactions asynchronously and utilising its live data capabilities.
- Dagger2 - Dependency Injection.
- Glide - Image Loading.
- Retrofit, OkHTTP, Gson - Networking, Logging and JSON parsing.
- Joda Time - Time Formatting
- RxJava2 - Asynchronous mode and reactive programming.
- ViewPager Indicator
- Seekbar.
- Toolbar is a personalised one which allows itemised handling of its features as well as functions.
- Width of each item in list.
- ImageSize on Playing a song.
- Only Preview url is to be played on playing a song.
- AutocompleteTextView for loading search preferences.
- Have not put in a Splash Screen because I did not find one in the resources provided.
- Height of view pager indicator.
- MVVP with single responsibility principle throughout the app.
- Tried to keep the data processing and manipulation only with the view model.
- All database transactions are asynchronous.
- Navigation responsibilty restricted to the activity for better performance.
- Reusibilty of views by using only a single activity.
- Added progress bar for song preparation.
- FAB for play/pause.
- Reactive favourites addition and removal.
- Proper sequence of handling clicks from the viewholder to the adapter to the fragment to the activity.
- LifeCycle aware viewmodel has no instances of context leakage.
- Write Junit test cases.
- Test app on different mobile screen sizes.
- Find a better alternative to break the list that the one deployed for view pager.
- Add fragment enter and exit transitions.
- Better way to highlight items in list.
- Create my own backstack to manage fragments.
- Implement the toolbar using builder pattern.
- Implement a separate singleton manager mediaplayer class.
- Use Exoplayer instead of Mediaplayer.