Carved out from the lofi-app monorepo. Kotlin MVVM client with HLS playback for the 20 curated lo-fi channels, including a containerized build.
1.8 KiB
1.8 KiB
Lofi Radio — Android
Android companion app for the Lofi Radio project: streams live lo-fi radio from the same 20 curated YouTube channels, playable anywhere — not just on your home network.
Part of the Lofi Radio project:
| Repo | What it is |
|---|---|
| lofi-app | Python streaming server + web frontend (channel discovery, HLS extraction) |
Features
- Browse the 20 curated lo-fi channels with live status
- HLS audio playback with full transport controls
- Favorites
- Channel search
- Settings (server address, playback options)
- MVVM architecture: Fragments + ViewModels, ExoPlayer-style audio service
Architecture
com.lofiradio/
├── ui/ # MainActivity, ChannelList, Player, Settings fragments + ViewModels
├── player/ # AudioPlayer — HLS streaming service
├── network/ # ServerApi, YouTubeExtractor
└── data/ # Models (StreamInfo, Channel), Preferences
The app can talk directly to a running lofi-app server for channel/stream metadata, or extract streams on-device.
Building
# Configure SDK path
echo "sdk.dir=/path/to/android-sdk" > local.properties
# Debug build
./gradlew :app:assembleDebug
# Release build
./gradlew :app:assembleRelease
A multi-stage Dockerfile (android-sdk base + Gradle) is included for reproducible container builds.
Project Structure
.
├── app/
│ └── src/main/
│ ├── java/com/lofiradio/ # Kotlin sources
│ └── res/ # Resources, layouts, themes
├── build.gradle.kts
├── settings.gradle.kts
├── gradle.properties
└── Dockerfile # Containerized build