DI.FM Android App

Android app development for Digitally Imported Inc’s radio brands DI.FM, RadioTunes, JAZZRADIO.com, ROCKRADIO.COM, ClassicalRadio.com, and Zen Radio.

Since 2015 I’ve been working with Digitally Imported on their suite of Android applications. I joined the previously 1-person mobile team, and helped rebuild the apps using Xamarin. All the branded apps are written with the same code base, differing only in look and feel, and configuration.

While new native-again applications written in Kotlin are underway, the majority of my time working with DI until now has been spent working on the Xamarin.Android based version of the apps.

Since the business logic portion of the codebase was shared with that of the iOS applications, I have contributed significantly to this side of the iOS app as well.

The mobile team has grown since 2015, so several people aside from myself have of course worked on the various features of the app.

Some areas of note I have worked on:

  • On-boarding (log in / sign up flow)
  • Player interface
  • A previous iteration of the radio channels browsing interface
  • Radio shows calendar (DI.FM only)
  • Home screen widgets
  • Playback control via notification
  • Much of the playback system
  • Integration of adverts, including clarifying complex business logic, unit tests
  • Laying out a system to make creating new branded skins less error-prone
  • Various development automation tasks through helper scripts
  • Google Cast integration allowing you to play the music through your TV; including developing the web app that runs on the Google Cast receiver device
  • Show/playlist following system
  • Various improvements to the robustness of the in-app purchase system
  • Content search functionality
  • An easter egg no-one outside the company appears to have mentioned yet, that I’m aware of… ;-)

An important part of my work is code review, where I carefully read my coworkers’ pull requests and offer suggestions toward better readability, maintainability, and efficiency.

I should point out that the interface was all designed by DI’s UX architect, so on that front I was only implementing. That being said, we often talk over design ideas to figure out how viable and/or complex they would be to implement.

I have also worked on maintaining our TeamCity-based continuous integration setup.

As with all software projects, a lot of time is further spent tracking down bugs and finding ways to address them. This is certainly true for a platform as fragmented as Android.

Technologies used:

  • Android framework, Android Support libraries, AndroidX
  • Xamarin, Xamarin.Android
  • C# up to version 6, some 7
  • Java
  • Kotlin
  • git, GitHub extensively for code review
  • TeamCity
  • Google Cast
  • Xamarin Studio
  • Microsoft Visual Studio
  • JetBrains Rider, JetBrains ReSharper
  • Android Studio
  • Bluetooth
  • Several 3rd party vendor SDKs for various purposes such as adverts, analytics, push notifications

Here’s another screenshot, showing a radio channel detail page:

The applications are not open source, but you can find them all on Google Play, along with more screenshots.