A few days ago, I released the most significant update to Vincy Radio since it’s inception many years ago. I’m pretty happy with it. It now features a more modern design and a new chat feature that promises a more engaging experience but before I go into all of that, I’d like to talk about a bit of its history.
The original version of Vincy Radio was created with the Titanium development tool. This allowed me to target both iOS and Android. I liked the iOS version but the Android version felt a bit sluggish. I kept the iOS version but decided to rewrite the Android version with the native Android SDK.
This performance was better and that’s the version that has been available until the most recent updates. I would update it from time to time to fix minor issues but it remained largely unchanged from its first release. The project was so old that it used libraries like ActionbarSherlock to support the Actionbar pattern on older devices.
I discontinued the iOS when I stopped developing for iOS.
The original idea for the update was just to update the code to fetch the list of stations from an alternative location from the Dropbox public folder in which it was stored. Dropbox had sent out an email saying that public folders would be discontinued so that was going to break the app.
I ran into some issues getting the old project to build so I decided that I would take the opportunity to rewrite from scratch using the more modern Android Studio/Gradle toolset.
The original version of the app just played the radio streams from a list of stations. Some people said that it needed more features but I couldn’t think of any more features it needed — it did what it was supposed to do! With the new version, however, I’ve added a few more. The app now has a chat feature where listeners can add comments to the station they’re currently listening to.
The way I see this being particularly useful is for talk show programmes so that people could contribute while they listen.
And just for fun, I added a realtime count of the number of listeners to each station. I just thought it would be cool to see the values change in front of my eyes. 🙂
So what technology did it take to make this all happen? I was contemplating using React Native for a while, but after the little issue that I had with it on another project I was eager to get back into native development. The app is built using the native Android SDK and it is backed by Google’s own Firebase for data storage and push notifications.
The app currently has just two screens, one for the list of stations and another for the comments. The list of stations is pulled from a Firebase realtime database and updates whenever that changes. It’s the same for the comments.
The playing of the radio stream is handled by the android MediaPlayer component. It’s wrapped in a service so that it can be played in the background. Playing media turned out to be a bit more complicated that I had anticipated. In order to make sure that the app plays well with other apps and the android system, in general, it listens for when other apps are using the audio stream and stops until it is finished. So if you get a call you don’t have to worry about stopping the radio.
For the visual design of the app, I use a blue, yellow, green gradient which are the colours of the flag of Saint Vincent and the Grenadines for which the app is targeted. I think it looks beautiful and just watching it I am filled with national pride! 🙂
I am pretty happy with the results so far and I am motivated to continue improving it. So anyone with ideas for how it can be improved can feel free to comment and share them! 🙂
Don’t forget to check out the app and give me some give a review if you like it! 🙂