Find a file
darksoon 96b30626b6
All checks were successful
PR CI / build-lint-test (push) Successful in 13m59s
Raise targetSdk to 36 (Android 16)
compileSdk is already 36; align targetSdk ahead of the expected
Google Play requirement for app updates (Aug 2026 cycle).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 15:06:56 +02:00
.github chore(release): 1.0.5 vorbereiten / prepare 1.0.5 release 2026-05-14 16:42:21 +02:00
.vscode "Phase 0 fertig: Projekt-Setup, Build Logic und Gradle Sync grün." 2026-02-23 12:12:27 +01:00
app chore(warnings): triviale safe-calls + hiltViewModel-paketmigration / trivial safe-calls and hiltViewModel package migration 2026-06-18 19:53:45 +02:00
auto chore(warnings): triviale safe-calls + hiltViewModel-paketmigration / trivial safe-calls and hiltViewModel package migration 2026-06-18 19:53:45 +02:00
build-logic Raise targetSdk to 36 (Android 16) 2026-07-04 15:06:56 +02:00
core fix(player): beim aussteigen ueber audio-route pausieren statt aufs handy / pause on audio-route loss instead of continuing on phone 2026-06-18 19:53:45 +02:00
docs docs(status): live-status und naechste ux-schritte pflegen / document live status and next ux steps 2026-04-24 19:25:01 +02:00
feature chore(warnings): ui-deprecations migrieren -> 0 warnungen / migrate ui deprecations -> zero warnings 2026-06-18 19:53:45 +02:00
gradle chore(audit): release-audit-findings beheben / address release-audit findings 2026-05-14 16:23:53 +02:00
.gitignore fix(player): fullscreen-layout wieder entspannen / relax fullscreen player layout again 2026-04-18 12:02:31 +02:00
build.gradle.kts chore(build): gradle-versions-plugin + patch-bumps / gradle versions plugin and patch bumps 2026-05-14 16:08:04 +02:00
CHANGELOG.md chore(release): 1.0.5 vorbereiten / prepare 1.0.5 2026-05-14 12:52:21 +02:00
CONTRIBUTING.md ci(release): release-notes aus commits strukturieren / structure release notes from commits 2026-04-03 11:41:41 +02:00
gradle.properties chore(release): prepare 1.0.12 2026-06-18 18:34:15 +00:00
gradlew build: gradlew ausfuehrbar machen / mark gradlew executable 2026-06-18 19:53:45 +02:00
gradlew.bat "Phase 0 fertig: Projekt-Setup, Build Logic und Gradle Sync grün." 2026-02-23 12:12:27 +01:00
keystore.properties.example build: add optional local release signing setup 2026-02-25 00:51:30 +01:00
LICENSE.txt license(project): relicense codebase to gpl-3.0 2026-03-09 23:32:12 +01:00
README.de.md docs(status): live-status und naechste ux-schritte pflegen / document live status and next ux steps 2026-04-24 19:25:01 +02:00
README.md docs(status): live-status und naechste ux-schritte pflegen / document live status and next ux steps 2026-04-24 19:25:01 +02:00
ROADMAP.de.md chore(release): 1.0.5 vorbereiten / prepare 1.0.5 2026-05-14 12:52:21 +02:00
ROADMAP.md chore(release): 1.0.5 vorbereiten / prepare 1.0.5 2026-05-14 12:52:21 +02:00
settings.gradle.kts refactor(cleanup): tote farb-aliases und custom-stations-modul entfernen / remove dead color aliases and custom stations module 2026-04-18 18:08:02 +02:00

RadioWave

Deutsch | English

CI Latest Release Android 8.0+ Kotlin 2.1.0 License GPL-3.0-or-later Ko-fi

The modern, ad-free internet radio app for Android.

Fast | Privacy-first | No tracking | 45,000+ stations

Project website: radiowave.sven-neurath.de


Roadmap

The public roadmap is available in ROADMAP.md.

  • Focus: stability and user value
  • Updated continuously with releases and polish passes
  • Feedback is welcome through GitHub Issues
  • RadioWave is live on Google Play; beta/sideload notes now only apply to GitHub APKs and test installs

Availability

Highlights

  • No account required, everything stays on the device
  • Completely ad-free, no analytics, no behavior tracking
  • 45,000+ stations via Radio Browser
  • Album art lookup via the iTunes Search API
  • Launcher quick actions for Search, Favorites, Player, and Settings
  • Android Auto support with favorites, quick access, search, and previous/next in the car player
  • Chromecast / Google Cast support with direct route selection from the player
  • Sleep timer and direct share action in the fullscreen player
  • Local crash-report export with share action and prefilled GitHub issue handoff

Screenshots

Home Search
Home Search
Favorites Fullscreen Player Settings
Favorites Fullscreen Player Settings
Android Auto 1 Android Auto 2
Android Auto 1 Android Auto 2
Android Auto 3 Android Auto 4
Android Auto 3 Android Auto 4

Tech Stack

  • Kotlin 2.1.0
  • Jetpack Compose + Material 3
  • Clean Architecture + MVVM
  • Hilt
  • Media3 / ExoPlayer
  • Room
  • Retrofit + Kotlinx Serialization

Quick Start

git clone https://github.com/darksoon/RadioWave.git
cd RadioWave
chmod +x gradlew
./gradlew :build-logic:build
./gradlew assembleDebug

Local Builds

# Full build
./gradlew build

# Lint + tests
./gradlew lint
./gradlew test

# Install debug APK
./gradlew installDebug

# GitHub-flavor debug build
./gradlew :app:assembleGithubDebug

# Play Store debug build
./gradlew :app:assemblePlayDebug

Restricted Networks / Proxy

If Gradle downloads are blocked, use a mirror or proxy:

# ~/.gradle/gradle.properties
systemProp.http.proxyHost=<proxy-host>
systemProp.http.proxyPort=<proxy-port>
systemProp.https.proxyHost=<proxy-host>
systemProp.https.proxyPort=<proxy-port>

Release Signing

Signed release builds are handled through GitHub Actions.

  • For GitHub/direct download use the signed github APK
  • For Google Play distribution use the signed play App Bundle (.aab)

For local signing experiments only:

cp keystore.properties.example keystore.properties
# edit keystore.properties

Installation

Google Play

Install RadioWave from Google Play:

https://play.google.com/store/apps/details?id=de.darksoon.radiowave

GitHub APK

  1. Open the latest release page: https://github.com/darksoon/RadioWave/releases/latest
  2. Download the current APK asset.
  3. Allow installs from unknown sources if your device asks for it.
  4. Open the APK and install it.

Player Improvements

  • Short network interruptions are handled more gracefully with improved reconnect tuning
  • The playback timer now reflects actual listening time and pauses during buffering
  • Fullscreen player includes a share action and a sleep timer
  • Favorites can be reordered more easily from the favorites screen
  • Active Chromecast sessions can be started directly from the fullscreen player, station changes are handed over to TV, and in-app play/pause controls route to the cast device

Android Auto

  • Browse is optimized for in-car usage: Favorites, Quick Access, Top Stations, Genres
  • Quick Access combines favorites and recents
  • Search merges local and remote results more robustly
  • Previous/next in the car player now works as real station navigation
  • Browse/search callbacks run asynchronously so Android Auto is not blocked by repository or network work
  • The player only holds the WiFiLock while the active network is Wi-Fi; WakeLock stays active for stable playback

See also: docs/ANDROID_AUTO_DEV_MODE.md

Chromecast / Google Cast

  • Cast devices can be selected directly from the fullscreen player
  • Starting a cast session moves the current station to TV and stops parallel phone playback
  • Changing stations while casting updates the TV stream instead of starting a separate local stream
  • In-app play/pause controls work on the active cast session
  • The player UI shows when playback is currently running on TV
  • Alexa / Echo streaming is not part of this cast integration and would require a separate Amazon-specific solution

GitHub Actions

Manual Android Build

Available under Actions -> Manual Android Build -> Run workflow.

PR CI

  • Runs automatically on pushes and pull requests to main
  • Can also be started manually
  • Uses Gradle build cache plus configuration cache
  • Test-task gating is configuration-cache-safe, so CI no longer breaks on modules without unit tests

Release Build

  • Signed releases are created through Actions -> Release Build
  • The workflow:
    • updates app.versionName and app.versionCode
    • builds a signed Play APK plus a Play Store App Bundle (.aab)
    • creates a tag and GitHub release
    • uploads release assets, including native debug-symbol artifacts for Play Console troubleshooting
  • Workflows are prepared for the GitHub Actions Node 24 migration (actions/checkout@v5)

Privacy

  • No analytics
  • No ads
  • No hidden telemetry
  • Crash reports are stored locally only and shared explicitly by the user

License

RadioWave is licensed under the GNU General Public License v3.0 or later. See LICENSE.txt.

For source files, Kotlin code uses SPDX-License-Identifier: GPL-3.0-or-later.

Credits