Android and Android Auto · 2025 — present
CoolZone WebRadio — mobile app
CoolZone WebRadio is the Android app for listening live to Tom Palmer's web radio on a phone, Bluetooth headphones and Android Auto. I have been developing it since 2025 with Ionic, React and Capacitor plus a native Kotlin plugin that handles the notification, audio outputs and the car integration. It also launches on Android TV; Google Cast support is in development.
Background
CoolZone WebRadio streams a single live channel, with programming prepared by Tom Palmer, the creator of the radio. The app and the website share the audio source and the visual identity, but they are separate projects. The graphic design (icon, colour palette, visual identity) is by Tom Palmer; from his material I produced the app icons and the splash screen.
I am the only developer: I wrote the code with the help of AI coding agents, while the problem analysis, technical decisions and testing on real Android devices are mine.
Goal
The app had to follow listeners on the phone, in headphones and in the car. Since it is a live broadcast, "stop" really stops the stream and "play" restarts from the current moment. Track, artist, show and cover art must stay in sync in the app, the notification, the lock screen and the car display.
What I built
How is the app built?
The interface uses React and TypeScript with Ionic, and Capacitor turns it into an Android app. System audio goes through a purpose-built Capacitor plugin, coolzone-android-auto-bridge, written in Kotlin: it handles the MediaSession, the media service that Android Auto reads and the choice of audio output.
Which devices and outputs does it support?
The app runs on Android phones and also launches on Android TV, with a simplified screen for the remote control. The output selector offers the phone speaker, Bluetooth and Android Auto. Bluetooth stays on the A2DP media profile, so audio never drops to call quality, and with the car connected output is locked to Android Auto. Output to Google Cast devices is in development.
How does the app work in the car?
In Android Auto, CoolZone appears among the media apps: the live stream starts from the car display, which shows title, artist, show and cover art. I tested it with the Desktop Head Unit (DHU), Google's Android Auto emulator, connected to real Android phones.
Where do the title and cover art come from?
Title and artist come from the streaming server. The cover art comes from a versioned API on the coolzonewebradio.it website, which gets it from IskRadioPlayer, the website's player, separate from the app's audio engine (see CoolZone WebRadio — website). The API always returns the full image address, so a redesign of the player does not require an app update. If the website does not respond, the app looks the cover up on iTunes or shows a default image.
The hardest part
The hardest part was Android Auto: two problems surfaced in September 2026 during DHU testing. First: with Spotify open and paused, the car showed Spotify instead of CoolZone, even while the radio was playing. Checking the phone's media sessions, I found that the app's MediaSession always declared itself "remote", as if it were playing on another device, and Android Auto preferred Spotify. Now the session is local when audio goes to the phone, Bluetooth or the car, and remote only for a Cast device.
Second: with the app in the background, the cover art in the car stopped updating. Android throttles the JavaScript of a WebView that is not visible, so no fix on the React side could work. I moved track and cover updates into Kotlin, inside the media service, active only while the car is connected. With the phone locked for several minutes, the cover changes with every track.
Outcome
Version 0.5.3 is live on Google Play, with the two Android Auto fixes, the new cover art retrieval and the migration to Capacitor 8 and targetSdk 36 (Android 16), which Google Play required by 31 August 2026. Capacitor 7 does not support that level, so Gradle and Kotlin had to be upgraded too.
It is a small project, built for the radio's listeners. Next come Google Cast support and a planned iOS version.
The radio's website has its own case study: CoolZone WebRadio — website.