NerLan is an Android language-learning audio player for Taiwan's National Education Radio (國立教育廣播電台) Channel+ platform. It makes the station's language-learning programs easy to browse, stream, and download for offline study — wrapped in a modern Jetpack Compose UI with Material 3 Expressive styling.
Looking for iOS? There is a matching iOS app: plateaukao/nerlan.
- Browse ~96 programs across 19 languages, with a wrapping FilterChip language filter to narrow the list.
- Full episode archives for every program, loaded with infinite scroll.
- Background playback via Media3/ExoPlayer, with a media notification and lock-screen controls.
- Playback speed from 0.5× to 2×.
- Repeat modes: off / repeat all / repeat one.
- MP3 downloads for offline listening, grouped by program and language.
- Favorites for both episodes and programs.
- Data layer — an OkHttp + kotlinx-serialization client for the Channel+ API (
https://channelplus.ner.gov.tw/api/v1). Seeapp/src/main/java/com/example/nerlan/data/(ChannelPlusApi.kt,Models.kt,DownloadManager.kt,FavoritesStore.kt). - Playback — a Media3
MediaSessionService(player/PlaybackService.kt) hosting ExoPlayer, controlled from the UI through aMediaController(player/PlayerManager.kt). This gives background playback, the media notification, and lock-screen controls for free. - UI — Jetpack Compose with Material 3 Expressive components (
ui/andtheme/), a single-activity app (MainActivity.kt).
Min SDK 24 · Target SDK 36 · Kotlin · Jetpack Compose
Debug build:
./gradlew assembleDebugRelease build — provide your own signing keystore via the standard injected signing flags:
./gradlew assembleRelease \
-Pandroid.injected.signing.store.file=/path/to/your.keystore \
-Pandroid.injected.signing.store.password=... \
-Pandroid.injected.signing.key.alias=... \
-Pandroid.injected.signing.key.password=...The APK is written to app/build/outputs/apk/release/app-release.apk.
This is an unofficial client. The Channel+ API it uses is not publicly documented and may change at any time. All audio content and program material belong to 國立教育廣播電台 (National Education Radio, Taiwan). This project is not affiliated with or endorsed by NER.