Jarian Cottingham cb74c3ddcf Initial commit: Lofi Radio Android app
Carved out from the lofi-app monorepo. Kotlin MVVM client with
HLS playback for the 20 curated lo-fi channels, including a
containerized build.
2026-08-21 18:36:45 +00:00
2026-08-21 18:36:45 +00:00

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
Description
Kotlin Android client for the lofi radio app (server: lofi-app)
Readme 100 KiB
Languages
Kotlin 98.9%
Dockerfile 1.1%