Back to Projects
In ProgressMobileCase study

Audiobooks for Android

A Kotlin + Jetpack Compose Android app that downloads the audio track from a YouTube link (or a share from the YouTube app) into a local library with background playback, per-book speed, bookmarks, and a sleep timer.

Problem

Long-form audio on YouTube — lectures, public-domain audiobooks, podcasts — has none of the things an audiobook listener needs: it loses your position, stops when the screen locks, and offers no library, speed, or bookmark controls.

Solution

The app bundles a yt-dlp runtime to extract audio in a foreground WorkManager download, stores books in a Room database with the playback position checkpointed every few seconds, and plays through a Media3 MediaSessionService so audio survives backgrounding with full notification and headset controls. A second iteration adds playlist handling, bookmarks, and a rights-confirmation flow.

What I learned

Reliable resume is a persistence problem, not a player problem — checkpointing position on a timer plus every pause/stop into Room made playback feel trustworthy in a way ExoPlayer alone never did.

Tech Stack

KotlinJetpack ComposeMedia3 ExoPlayerRoomWorkManageryt-dlp

Screenshots

Screenshots will live here once this project has a stable UI worth showing.

More Mobile projects

Mobile

Mobile

Capy Springs

A cozy gamified focus timer where a capybara soaks in a hot spring while you work.