Skip to content
basiliskusPublic

About

Android radio player that plays M3U playlists from a synced folder, with radio-browser.info discovery, background playback and Android Auto. Kotlin, Compose, Media3.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Onda

Onda is an Android radio player: a lighter, purpose-fit replacement for Transistor. It watches a folder of M3U playlists — any folder the phone can open, typically one kept in sync with a desktop — renders them as real groups, lets you browse and favorite stations from radio-browser.info, and plays through Media3 for background playback, notification controls, and Android Auto.

Screenshots

TODO: add screenshots once the UI settles.

Install

Onda isn't on the Play Store. Install it via Obtainium:

  1. Add app → paste https://github.com/basiliskus/onda.
  2. Obtainium tracks this repo's releases and offers updates as new tags ship.

Quick start

  1. Put one or more .m3u playlists in a folder on the phone, or in a folder your sync tool (Syncthing, Nextcloud, Synology Drive, …) mirrors to it. The playlists in core/src/test/resources/playlists/ work as a starting set.
  2. Open Onda and choose that folder. Every *.m3u file in it becomes a playlist. After the folder syncs, return to Onda or pull to refresh to pick up desktop edits.

Data contract

Onda doesn't own the playlists it renders — it reads *.m3u files from the folder you pick and rescans it whenever the app returns to the foreground or you pull to refresh; there's no in-app import. Edits (star, targeted add, delete, move between groups or playlists) append ops to an ops.jsonl journal in that folder for a desktop consumer to merge, rather than mutating the M3Us directly. Liking a track appends one line to recordings/onda-titles.log there, in the same format pyradio writes. Those three — playlists in, ops journal out, titles log appended — are everything the app touches in that folder. File formats and invariants: docs/data-contract.md; stream-quirk knowledge: docs/spec.md.

Maintainer's setup

The maintainer's playlists are pyradio CSVs in a private data repo, exported to ~/Sync/Radio/*.m3u and synced to the phone by Synology Drive. A launchd agent merges ops.jsonl back into the CSVs, and a desktop harvester ingests the titles log.

Contributing

This is a personal project fitted to one user's workflow and isn't accepting contributions.

About

Android radio player that plays M3U playlists from a synced folder, with radio-browser.info discovery, background playback and Android Auto. Kotlin, Compose, Media3.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages