musiQ - a musical encyclopedia with integrated scrobbling

in #utopian-io7 years ago (edited)

This application is designed using the MVP pattern. It is a useful source to see how MVP is implemented along with Retrofit/Dagger/RxJava and how easily testable classes are with Robolectric and Mockito. It's also useful to see how the Notificationlistenerservice.class is used to fetch data from classes that override the MediaController interface. The other approach would be like in apps such as Simple Lastfm Scrobbler, which use package names to fetch intents. But that is extremely cumbersome, because you need to find the package-specific names and their commands in order to intercept the calls from their Media Player. For example a package name for the foobar media player is "foobar2000", but this way you need to create BroadcastReceievers for EVERY media player you wish to intercept. My approach is simpler, because all classes override the MediaController interface and all the calls are handled from one class(NotificationListenerService). The application features a beautiful material design, and makes use of cutting-edge libraries to function, e.g.:

RxJava2
Dagger2
Retrofit2
RxBinding
ButterKnife
OkHttp
Gson
Glide
DBFlow
Robolectric
PowerMock
Mockito 

The API for all the information is the LastFM API.

Other libraries include custom labels, tooltips, Calligraphy library for fonts, and Google's support libraries.

This application is meant to be a musical library for anyone who might enjoy having a cool app, which fetches information fast and accurate from a reliable musical site, with up-to-date information about artists, albums and songs. The program is very versatile, because it makes use of all the features the last.fm API provides such as top artists, top songs, top songs per artist, top artists by geographical region etc...

Recently I added scrobbling integration, so the application now scrobbles to last.fm from music players like:

YouTube
Google Play Music
Spotify
Pandora
SoundCloud
VLC
and more...

Some features this app. supports:

Search for artists and albums
Add artists and albums to your favorites for quicker access
Select a specific artists to view more detailed information about them like their genres, biography and albums
Select a specific album to view detailed information about it.
Different phones support different emojis - you will have an unique penguin mascot for your device!
Scrobbling notifications
Currently scrobbling track information
Scrobble history
'Love track' button
Scrobbling from cache(e.g. offline scrobbles to be scrobbled at a later point)
Beautiful graph showing the top tracks and top artists in a time span, which the user can specify

Features to be implemented will be:

Track statistics in the Artist detail menu
More user-specific information from last.fm

Here are some screens:

Log in screen:
https://i.imgur.com/ZpDCQOX.png

Main screen with top artists for the week:

https://i.imgur.com/02DTZ2X.png

Artist details screen:

https://i.imgur.com/UjeFnQY.png

Album details screen:

https://i.imgur.com/DCt5Lsm.png

Now playing scrobble screen and statistics screen:
https://i.imgur.com/MHR38Ox.png

https://i.imgur.com/8bNu87y.png

General settings screen:

https://i.imgur.com/4sAIX9x.png

https://i.imgur.com/Rl7j1xO.png

Settings screen to select which media players are enabled to scrobble from:

https://i.imgur.com/o023Td7.png

Artist and album search:

https://i.imgur.com/L1HQnUp.png

https://i.imgur.com/uFXPNP8.png

Favorite albums tab:
https://i.imgur.com/2N7Qh4K.png



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

Thank you for the contribution. It has been approved. I guess this is the first time you are creating the contribution, you should check the Utopian Rules https://utopian.io/rules.

When you create any contribution please try to add relevant commits you have worked on in the contribution and explain more about it.

You can contact us on Discord.
[utopian-moderator]

Thanks, will do! I will update my post with some screenshots and details later.

This looks interesting, can you maybe post a pic?

Yep I added some screenshots. Thanks for the comment!

Okay I updated the main post with some fresh screens!