A simple web radio player, which uses a lot of libraries:
- Appcompat: Downward compatibility to version 16 (Android 4.1 - JELLY_BEAN)
- Design: Snackbar + FloatingActionButton
- MultiSelect RecyclerView: Efficient viewholder pattern + nice animation/layouting capabilities
- MaterialFavoriteButton: Animated favorite button
- ActiveAndroid: Data persistence through object relation mapping (ORM) of Java objects to SQL rows
- Otto: Heavy use of events to decouple fragments, services, etc
- Retrofit + OkHttp: Querying of the RadioTime API to discover new stations
- JUnit + Hamcrest + Espresso: Automated UI tests
- Mockito + Retrofit-Mock: Mocking of dependencies for decoupled testing
The app supports system callbacks, like audiofocus gain or loss (e.g. when receiving a call), headphone disconnects or media button clicks.
It also uses a service and notification for background playback and allows searching, adding and removing of stations.
The current song's title and artist is decoded from the stream's shoutcast metadata.