lofi-android/README.md
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

60 lines
1.8 KiB
Markdown

# 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](https://git.jarianc.com/jarianc/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](https://git.jarianc.com/jarianc/lofi-app) server for channel/stream metadata, or extract streams on-device.
## Building
```bash
# 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](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
```