37 lines
1.2 KiB
Markdown
37 lines
1.2 KiB
Markdown
|
|
# 24/7 Radio
|
||
|
|
|
||
|
|
Personal-use Android app for 24/7 internet radio streaming.
|
||
|
|
|
||
|
|
## Features
|
||
|
|
|
||
|
|
- **Custom Raw Audio Pipeline** — OkHttp → IcyParser → Mp3FrameSync → MediaCodec → AudioTrack for absolute minimum latency (~26ms per MP3 frame)
|
||
|
|
- **Stay Connected Mode** — Aggressive reconnection with exponential backoff, never gives up
|
||
|
|
- **Dual Timers** — Session elapsed time and connection elapsed time
|
||
|
|
- **Latency Indicator** — Estimated stream-to-speaker latency
|
||
|
|
- **Icecast/Shoutcast Metadata** — Track title, artist extraction from ICY protocol
|
||
|
|
- **Album Art** — MusicBrainz/Cover Art Archive lookup with fallback chain
|
||
|
|
- **Playlist Management** — PLS/M3U import/export with #EXTIMG support
|
||
|
|
- **Station Organization** — Playlists, starring/favoriting, manual reorder
|
||
|
|
|
||
|
|
## Requirements
|
||
|
|
|
||
|
|
- Android 9.0+ (API 28)
|
||
|
|
- Internet connection
|
||
|
|
|
||
|
|
## Build
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./gradlew assembleDebug
|
||
|
|
```
|
||
|
|
|
||
|
|
## Import Stations
|
||
|
|
|
||
|
|
1. Open the app
|
||
|
|
2. Tap the import icon in the top bar
|
||
|
|
3. Select a .m3u or .pls file
|
||
|
|
4. Stations are added to your list
|
||
|
|
|
||
|
|
## Architecture
|
||
|
|
|
||
|
|
See [Design Document](docs/plans/2026-03-09-android-247-radio-design.md) and [Implementation Plan](docs/plans/2026-03-09-android-247-radio-implementation.md).
|