Skip to content

RorriMaesu/Shravify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shravify Logo

Shravify

The Ultimate Offline Audiobook Experience for Android

Platform Language UI Engine Transcoder

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.


💎 The Core Pillars

🎯 Sub-Second Navigation

  • 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.

🔊 Acoustic Optimization

  • 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.

📥 Autonomous Downloader & Transcoder

  • 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-kit pipeline to strip video tracks and transcode audio formats (Opus, WebM, FLAC) into standard, highly compatible 128kbps AAC .m4a files upon download completion.

🚘 Unlocked Integration

  • 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.

🛠️ Architecture Blueprint

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.5 build, ensuring compatibility with Android SDK 35 (Android 15) and strict 16KB memory page alignments.

🚀 Building & Setup

Requirements

  • Android Studio (Ladybug 2024.2.1 or newer)
  • JDK 17
  • Android SDK 35 (compileSdk 35) / Minimum SDK 26

CLI Compiling

Generate the debug APK build package by running:

./gradlew assembleDebug

The compiled APK will be located at app/build/outputs/apk/debug/app-debug.apk.

About

A premium, feature-rich Android audiobook player that lets you download audio streams directly via URL. Built for power users who want total control over their listening library without walled gardens.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages