The Ultimate Offline Audiobook Experience for Android
Shravify is a premium, local-first audiobook player designed for collectors and purists who value offline autonomy, absolute playback control, and zero progress loss. It wraps cutting-edge Android APIs in a high-fidelity Material 3 design to deliver an unmatched listening experience.
- PrecisionScrubber: An advanced, custom Canvas seek bar built for long narrations:
- Dual-Axis Control: Drag horizontally to scrub; drag down to engage logarithmic magnification (down to 1-second increments).
- Scrub HUD: Displays a magnifying glass showing the target time and chapter name dynamically.
- Tick Snapping: Automatically aligns to chapter tick marks (long-press to override snapping behavior).
- Accidental Touch Protection: Logs seeks exceeding 30s. If you accidentally jump, a temporary snackbar lets you instantly Undo Seek to return to your exact previous playhead.
- Vocal Frequency Equalizer: Tailors frequencies to enhance narrations, voiceovers, and dialogues.
- Dynamic Volume Boost: Amplifies low-gain audio tracks cleanly to preserve speech clarity in noisy conditions (e.g. traffic, subways).
- Silence Skipping: Intelligently trims silent or low-volume gaps in narration, accelerating your listening without altering the natural pitch of the voice.
- Direct Stream Fetcher: Paste stream URLs (YouTube, SoundCloud, etc.) to query a custom Cobalt API, fetch media links, and download them via the system
DownloadManager. - Background Transcoding: Uses a background Hilt-injected
FFmpeg-kitpipeline to strip video tracks and transcode audio formats (Opus, WebM, FLAC) into standard, highly compatible 128kbps AAC.m4afiles upon download completion.
- Android Auto: Browse your queue, library, and active playlists directly on your automotive dashboard.
- Homescreen Widget: A clean, Material You-colored 4x1 interactive playback controller.
- Backup & Restore: Export and import your entire progress history, bookmarks, notes, and scratchpads in JSON format.
- Character Scratchpad: Write down character lists, plot lines, or timestamps inside each audiobook's profile.
Shravify uses a highly decoupling Clean Architecture model using Hilt for dependency injection:
app/src/main/java/com/precision/audiobooks/
│
├── data/ # Repository and DB (Room databases, Chapter parsing, Settings datastores)
├── di/ # Hilt Dependency Injection bindings
├── playback/ # Media3 Library service session and FFmpeg download handlers
└── ui/ # ViewModels and Jetpack Compose screens (Library tabs, Player, Scrubber HUD)
- BookTimeline: Translates global audiobook time into individual local file offsets. This maps multi-file folders (e.g. 40 separate MP3s) and single M4B files to identical timeline structures.
- Community LTS FFmpeg: Uses the community-maintained
dev.ffmpegkit-maintained:ffmpeg-kit-free-81:8.1.5build, ensuring compatibility with Android SDK 35 (Android 15) and strict 16KB memory page alignments.
- Android Studio (Ladybug 2024.2.1 or newer)
- JDK 17
- Android SDK 35 (compileSdk 35) / Minimum SDK 26
Generate the debug APK build package by running:
./gradlew assembleDebugThe compiled APK will be located at app/build/outputs/apk/debug/app-debug.apk.