← Back to Projects
Finished Mobile

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.

Technologies used

Kotlin Jetpack Compose Media3 ExoPlayer Room WorkManager yt-dlp

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.

More Mobile projects

Mobile

Mobile

React Native Expo TypeScript

Capy Springs

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