Skip to main content
Home
BookReader app launcher icon
Free to Use Hobby Project v4.4.0 · Latest Android · Kotlin · Jetpack Compose

BookReader

My ongoing Android free to use project: a high-performance native novel reader with on-device neural TTS audio, quote-aware sentence chunking, persistent notification media bar, and offline audiobook synthesis.

Live Android Showcase 5 Authentic Screens

Native Android Experience

Explore BookReader's custom Jetpack Compose interface in its signature sepia reading theme, on-device neural TTS voice engines, and persistent background playback.

Library & Playlist Hub
View Fullscreen
Screen 1 of 5 Swipe to change
Storage & Playlists Screen 01 / 05

Library & Playlist Hub

NovelArrow Reader Pro · Root Folder & Scoped Storage

Pick any root folder on your Android device. Every subfolder automatically becomes its own reading playlist with independently tracked chapter progression and offline text-to-speech audio state.

Key Capabilities

  • Automatic subfolder playlist indexing via Android Storage Access Framework
  • Crash-proof chapter progress saving using AtomicFile
  • Instant one-tap Resume directly from the home deck
  • Offline-first architecture with zero mandatory network connectivity
Architecture: Kotlin Coroutines · AndroidX DocumentFile · AtomicFiles

All Screen Captures

Full screen preview

Key Features

🎙️

On-Device Neural Voices

Kokoro TTS (82M prosody), Piper TTS (<65MB Arabic, French, and English), and KittenTTS (<30MB) running entirely on device with zero cloud latency.

⏱️

Notification Shade Toolbar

AndroidX Media3 foreground service keeping reading speed cycling (1.0x, 1.25x), sleep timers, and chapter skipping pinned to your notification bar.

📥

Batch Chapter Audio Studio

Automatically synthesizes novel text into standalone MP3 audio files with custom folder management, seekbar playback, and background worker.

🌐

Live Web TTS & Scraper

Multi-tab in-app browser with Jsoup DOM pipeline stripping ads and sidebars, streaming clean web novels directly into the speech synthesis engine.

🔊

Background Audio Playback

AndroidX Media3 MediaSessionService with full lock screen controls, earbud click triggers, and audio focus management for phone calls.

🎨

Responsive Sepia UI

Jetpack Compose Material 3 in warm sepia, dark OLED, and light modes. Clean typography, quote-aware sentence tokenizer, and custom speech rate.

🧹

Content Filters & Replacement

Header/footer skip keywords, HTML CSS selectors, word skip rules, and pronunciation phonetic replacements for clean reading.

💾

Crash-Proof Scoped Storage

AtomicFile writes for zero corruption on sudden OS kills. All reading playlists and chapter progress survive aggressive Android battery killers.

🔧

Userscript Engine

Modular script injection with wildcard URL pattern matching, custom DOM manipulation, and site-specific novel overrides.

Architecture & Technology

01
UI Layer Jetpack Compose M3

Fully declarative Kotlin UI with Material Design 3 theming. Signature sepia/dark/light themes, bottom dock media controls, and full-width adaptive dialogs for settings.

02
Audio Engine AndroidX Media3 + ExoPlayer

Decoupled MediaSessionService operating in an independent Android Service lifecycle. Survives orientation changes, app minimization, and handles audio focus for calls and navigation prompts.

03
TTS Processing Neural Engines (Kokoro / Piper) + Native TextToSpeech

Multi-engine speech synthesis abstraction. Regex-based quote-aware tokenizer with quote protection (", «», ""), abbreviation shielding (Mr., Dr., Ch.), and CJK terminal character detection.

04
Web Scraping Jsoup + WebView

Jsoup DOM pipeline for chapter extraction using user-configurable CSS selectors. JavascriptInterface bridge for userscript injection with wildcard URL matching.

05
Storage AtomicFile + Kotlin Coroutines

Crash-resistant persistence via Android AtomicFile (write → staging file → atomic rename). Thread-safe access with Coroutine Mutexes. Zero special permissions required.

06
Architecture Pattern Clean Architecture + MVVM

Decoupled domain, data, and presentation layers. StateFlow-driven reactive UI state, centralized AudioPlaybackCoordinator service, and Coroutine-based async operations.

Tech Stack

Android Kotlin Jetpack Compose M3 AndroidX Media3 ExoPlayer TextToSpeech Kokoro TTS Piper TTS Jsoup AtomicFile Kotlin Coroutines MVVM Clean Architecture Material Design 3