Hey. About half a year ago, I started an Android application for scrobbling of
last.fm music played in different players.
For several months I don’t have time to develop this project, so I decided to open its source code (
repository on github ).
I am writing this post on Habr with a little hope that there are people here who would be interested to develop WAIL further, add new features, fix bugs and just participate in the open source Android project :)
')
Briefly about last.fm : this is a service for those who like to listen to music, the main feature of which is that you can transfer information about the tracks that you listen to, and last.fm based on this will offer you other performers, friends, concerts of performers, which you are listening to (by the way, it's awesome, for the first time I went to a concert precisely on the recommendation of last.fm).
Screenshots to maintain interest
Briefly about the possibilities of WAIL :
- Interception of events (broadcasts intents) about playing music from various players and scrobbling this information in last.fm
- #Nowplaying update on last.fm
- Offline work (when access to the network appears - WAIL will send information to last.fm)
- Minimalistic UI in Holo style (although it looks good on Android L too)
- The possibility of sound notifications about scrobbling a track or skipping a track (if the track is ignored by the application due to different conditions)
- List of processed tracks
- And the little things :)
Some more screenshots:


Now, about the architecture of the application for those who would be interested to delve inside
- WAIL - What am I listening
- 1) The main part of WAIL is BroadCastReceviers that catch intents from music apps.
- 2) The second main part of WAIL - WAILService , to which information about tracks is transmitted, he already decides what to do with them - scrobble, update #nowplaying, etc.
- 3) Internal SQLite database, in particular TracksDBHelper , here WAIL writes the processed tracks, respectively, this database allows you to work offline. WAILService periodically traverses this information and sends it to last.fm
- 4) Well, actually UI: Everything is built on fragments, there is support for layout for tablets
What priority in features
- RemoteControllerClient support is an API for media players, much better than handling intents. there is at least some standard on it. By the way, your lock screen uses this API to display and control the music being played. I have some developments in this area, but everything is complicated by the almost complete lack of documentation from Google on this topic. The essence of RemoteControllerClient support is that WAIL will automatically be able to handle ALL music players that use this API.
- The output of the current track being processed on the main screen - many users do not understand whether a track is currently processing WAIL or not ... In general, a necessary and useful feature
- Displaying scrobbling notifications, updating #nowplaying to status bar
- Settings for disabling scrobbling depending on the type of network connection (mobile networks / wifi)
- Feel free to offer your suggestions on issues on the githab
Who might be interested in digging in WAIL
- Experienced Android developers who want to show their skills in the Open Source project :)
- Beginning Android developers who I suggest doing small fixes / features and slowly mastering Android development in real practice with access to Google Play to real users
- WAIL users who are concurrently Android or Java developers and want to change something in the application :)
If you decide to help WAIL
1) Firstly - thank you very much, both from me and from users :)
2) Secondly, I wrote a
small wiki on the topic of styled gages on commits, on git flow and styled gays on the sources and resources of the project , please read
it , it is short.
3) Thirdly - yes,
successfully submitted pull requests from you will get into Google Play!4) I will be the project manager, periodically checking pull requests, I will help the project as a developer when there is time. Google Play releases will be made as the project develops, I would like to make frequent releases in order to quickly get feedback from users and build plans for the next releases
5) If you want to start with a light one, make up a small issue, for example, fix an icon or translate it into a language that you can understand, get an issue on the githabe, then make a pull-request with a fix / feature and that's it :)
Thank you all for your attention, I hope WAIL will develop and live on :)
Link to githab WAIL Beta - Android last.fm scrobblerPS
If you look at the githab, you will see that there are very few commits. This is due to the fact that the private repository contained the keys with passwords with which I sign the applications (Fail, I agree), I decided not to trust git filter-branch and bfg and just created a new repository transferring the sources and removing private data, about ~ 250 commits is lost.
In addition, the application contains keys to last.fm api, and yes to the githaba. But damn, it is not difficult to decompile the Android application and get all this data, and complicate the development of other people by having to register on last.fm in the developers section, I would not want to receive the keys, please do not use them for bad intentions :)Fasting is not in “I am promoting” due to the fact that: 1) The project is open-sourced 2) It is absolutely not commercial, made with soul for those to whom the application is useful 3) If Habr's moderators consider that the post should be moved to “I am promoting” - OKPps
Naturally, the code is not perfect ... Now I would rewrite half, but in general, the architecture is flexible and extensible :)
Ready to answer questions in the comments to the article.