FRadio DZ 1.0.17: HLS streams and a search that forgives
People were asking me to add stations that FRadio DZ already had. Searching for "Bahja" didn't find El Bahdja, and some Arabic spelling variants returned nothing.
Other requests were for stations the app couldn't play yet, including Al Jazeera and Sky News Arabia. Version 1.0.17 addresses both problems and is available on Google Play.
I've been running FRadio DZ since 2015, when it started as an iOS app for Algerian radio. It's now on the web at fradiodz.com and on Android, using the same Kotlin, Jetpack Compose, and Media3 stack as Swift Radio Android.

The international station lineup.

Sky News Arabia, playing over HLS.
HLS playback
Al Jazeera, Sky News Arabia, and Medi 1 came up repeatedly in the request form. The streams I needed to support use HLS: .m3u8 playlists instead of a plain MP3 or AAC endpoint. The app couldn't play those yet.
1.0.17 adds playback through the Media3 HLS module. Background playback, lock screen controls, and Android Auto work as they do for the existing streams.
The plan is to add these stations to the catalog once most phones have this version. Older builds would show them but fail to play them. I'd rather wait than offer a station that doesn't work.
Search that forgives
The old search was too strict about spelling. Those requests for stations already in the app showed where it was failing.
The new search normalizes the query and station text before comparing them, then allows for typos:
- Accents: "algerienne" matches Radio Algérienne.
- Arabic spelling: alef variants match, as do taa marbuta and haa. Diacritics and tatweel are ignored.
- Typos and partial names: "Bahja" finds El Bahdja, and a name doesn't have to be typed in full.
- Generic words: adding "radio" or "إذاعة" won't prevent a match. "Radio Mascara" finds Mascara.
- Translations: search checks every translation of a station's description, regardless of the app's current language.

"bahja" is enough to find El Bahdja.
When a search still comes back empty, the request form opens with the query already filled in. Asking for a station is one tap, and I get to see exactly what people typed.
Fewer silent failures
A failed stream could send the player into a retry loop without reporting an error. 1.0.17 stops retrying and reports the playback error. That also makes failures easier to track in the analytics.
This release also adds Play Install Referrer attribution, so I can tell which link an install came from. It's only reported when analytics is enabled.
What's next
Next, I'm adding podcasts from Algerian radio stations. If a station you listen to is missing in the meantime, let me know through the request form in the app.