ShizuStore

FineVolume

broknhrt2562

1.0.0 · GitHub

Download APK
Audio Android 10+ 3 days ago Apache-2.0
41 ShizuStore
112 GitHub
12 Stars
2 MB Size

More about this app

Pixel-style volume panel with 120-step precision plus per-app and per-stream volume control, using a Shizuku high-precision audio proxy.

FineVolume Logo

FineVolume

Pixel-Fidelity Android 17 Volume Panel with 120-Step Ultra-Fine Precision

Android 10+ Jetpack Compose Pixel Design 100% Offline License


🌟 Overview

By default, Android hardcodes media volume into a coarse 15 steps, often leaving you stuck between "a bit too quiet" and "painfully loud".

FineVolume replaces your phone's native volume panel with an ultra-responsive, pixel-accurate Android 17 / Pixel SystemUI volume slider powered by a Shizuku high-precision audio proxy that unlocks 120 granular volume levels.

Wrapped in pure Jetpack Compose, FineVolume features modern rectangular squircle geometry, a prominent divider handle, fluid spring animations, zero background dimming, and seamless hardware key repeat.


✨ Key Features

🎚️ 120-Step Granular Precision

  • Bypass OS Limitations: Increases media volume granularity from 15 coarse notches to 120 micro-steps for perfect acoustic tuning with headphones, IEMs, and Bluetooth speakers.
  • Cubic Perceptual Taper (\(x^3\)): Logarithmic volume curve modeled after the human ear's sensitivity, ensuring changes feel linear and natural at low, medium, and high volumes.

🎨 Pixel / Android 17 Material You Design

  • Modern Rectangular Squircle: Clean, contemporary squircle geometry (18dp outer container, 14dp slider tracks) instead of outdated circular stadium pills.
  • Prominent Divider Bar: Distinct 5.5dp horizontal indicator bar with smooth capsule rounding, dividing active and inactive volume tracks.
  • Edge-Optimized Geometry: Engineered with vertical clearance so the divider bar never shrinks, clips, or deforms at minimum (\(0\%\)) or maximum (\(100\%\)) volume.
  • Dynamic Color Support: Seamlessly adapts to your system wallpaper with Material You dynamic color schemes in light and dark modes.

πŸ“± Dual-State Interactive Overlays

1. Collapsed Right-Edge Overlay

  • Quick Ringer Mode Toggle: Cycle between Normal, Vibrate, and Silent (Mute) with a single tap.
  • Vertical 120-Step Media Slider: Drag directly with sub-pixel precision or adjust via hardware keys.
  • Live Caption Quick Toggle: Instant toggle with system state synchronization.
  • Expand / Tune Button: Opens the full multi-stream panel with a fluid spring animation.

2. Expanded Multi-Stream Dialog

  • Zero Background Dimming: 100% transparent backdropβ€”never grays out your wallpaper or active app.
  • All System Audio Streams:
    • 🎡 Media (with granular stepping)
    • πŸ“ž Voice Call
    • πŸ”” Ring
    • πŸ’¬ Notifications (with intuitive mute warnings)
    • ⏰ Alarm
  • Live Caption Center Pill: Dedicated system accessibility control.
  • System Sound Shortcut & Done Button: Quick access to device sound settings, with automatic dismissal directly back to your screen when finished.

🎡 Per-App Volume Control

  • Independent App Sliders: Automatically detects running audio apps (Spotify, YouTube, Chrome, VLC, YouTube Music, Games, etc.) and provides individual volume sliders inside the expanded panel.
  • Deep Shizuku Audio Hook: Attenuates audio sessions directly at the Android audio framework level without requiring root.
  • Real-Time Playback Tracking: Accurately tracks when apps start, pause, or finish playback.

⏸️ Pause Mode & Security Compatibility

  • One-Tap Quick Pause: Temporarily pause FineVolume with one switch in Settings whenever you need to bypass banking or security apps that block third-party accessibility services.
  • Geto Integration: Compatible with GETO to automate per-app accessibility toggling via Shizuku.

⌨️ Physical Volume Button Engine

  • Single Press: Steps exactly 1 FineVolume increment.
  • Smooth Long Press: Continuous, rapid volume transitions with automatic repeat loops.
  • Zero OEM Clashing: Native volume dialog is cleanly superseded by FineVolume's accessibility overlay.

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   FineVolume System                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β–Ό                                   β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Accessibility Service  β”‚         β”‚   Shizuku Proxy Core   β”‚
β”‚ - Hardware Key Filter  β”‚         β”‚ - IPlayer Binder Hook  β”‚
β”‚ - Hold-to-Repeat Loop  β”‚         β”‚ - Cubic Interpolation  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                                   β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚               VolumeOverlayController                  β”‚
β”‚ - WindowManager Overlay (TYPE_ACCESSIBILITY_OVERLAY)   β”‚
β”‚ - Pure Jetpack Compose Lifecycle Management            β”‚
β”‚ - 120-Step Mutex-Guarded State Engine                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  • AccessibilityVolumeService: Intercepts volume key events before the OEM SystemUI can display the stock panel.
  • VolumeController: Mutex-guarded state holder managing 120 fractional volume levels and broadcast updates.
  • ShizukuPlayerBackend: Hooks into the Android media framework via Shizuku IPC to apply granular attenuation directly to active audio sessions without requiring root.
  • VolumeOverlayController: Custom ComposeView window layout supporting fast gesture drags, touch outside dismissal, and spring animations.

πŸ”’ Privacy & Permissions

  • πŸ›‘οΈ 100% Offline: FineVolume has zero internet permissions (android.permission.INTERNET is omitted from AndroidManifest.xml).
  • πŸ”‹ Battery Efficient: Runs as a passive Accessibility Service that only activates when volume keys are pressed or the panel is drawn.

Required Permissions

  1. Accessibility Service: Intercepts physical volume button presses.
  2. Shizuku (Optional / Recommended): Grants elevated permission to apply granular 120-step audio scaling to media sessions without root.
  3. Do Not Disturb (Notification Policy): Allows toggling between Ring, Vibrate, and Silent modes directly from the overlay.

πŸ“¦ Installation & Setup

  1. Install APK:
  2. Enable Accessibility Service:
    • Open Settings β†’ Accessibility β†’ FineVolume β†’ Turn on.
  3. Grant DND Access:
    • Tap the Ringer button on the overlay or follow the in-app prompt to allow Do Not Disturb access.
  4. Start Shizuku (for 120-step audio proxy):
    • Ensure Shizuku is running via Wireless Debugging or ADB, then open FineVolume and grant permission.

πŸ› οΈ Building from Source

# Clone the repository
git clone https://github.com/broknhrt2562/finevolume.git
cd finevolume

# Build optimized release APK
./gradlew assembleRelease

The output APK will be generated at: app/build/outputs/apk/release/app-release.apk


πŸ“„ License

Licensed under the Apache License, Version 2.0.

Close

How Shizuku is used

Can fine-tune media volume, control per-app volume and toggle captions via `Shizuku audio proxy and shell process`.

This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.

How this app uses Shizuku

FineVolume uses Shizuku to run a high privilege audio proxy and to run system settings commands for captions.

  • Precise media volume: the volume slider sets a normal system level plus a fractional gain on active media playback through Shizuku, giving about 1000 effective levels instead of the usual handful of steps.
  • Per-app volume control: the user can set an individual level for each currently playing app, applied as a separate gain on that app's active playback through Shizuku.
  • Live playing apps: the expanded panel shows which apps are actively playing and recalls their saved levels, based on active playback information collected through Shizuku.
  • Caption toggle: the volume overlay button switches the system live caption setting on or off by running the settings put secure command through Shizuku when a direct system write is not allowed.

Android APIs or commands used

  • ActivityThread.systemMain()
  • AudioManager.getActivePlaybackConfigurations
  • AudioPlaybackConfiguration.getPlayerProxy
  • IPlayer.setVolume
  • AudioPlaybackConfiguration.getPlayerState
  • AudioPlaybackConfiguration.isActive
  • AudioPlaybackConfiguration.getClientUid
  • PackageManager.getPackagesForUid
  • AudioManager.setStreamVolume
  • AudioManager.getStreamVolume
  • AudioManager.getStreamMaxVolume
  • settings put secure odi_captions_enabled
  • settings put secure accessibility_captioning_enabled

Notable details

Works without Shizuku with standard system volume steps, Shizuku only adds sub-step precision, per-app control and the caption toggle without opening system settings.

Close

Changelog

What's new for version 1.0.0

FineVolume is a fine-grained Android volume controller designed to provide precise volume adjustment beyond Android's default volume steps.

Features:

Customizable volume resolution with configurable N-step control Separate volume controls for Media, Call, Ring, Notification, and Alarm Separate per-app volume adjustment where supported Shizuku integration for advanced volume control Pixel/Android-style volume panel Physical volume button interception Smooth volume adjustment and slider control Volume percentage display Haptic feedback for volume changes Accessibility-based overlay Works without root

First public release of FineVolume.

Close

Permissions

8 permissions requested

  • android.permission.MODIFY_AUDIO_SETTINGS
  • android.permission.ACCESS_NOTIFICATION_POLICY
  • android.permission.VIBRATE
  • android.permission.FOREGROUND_SERVICE
  • android.permission.FOREGROUND_SERVICE_SPECIAL_USE
  • android.permission.POST_NOTIFICATIONS
  • dev.finevolume.app.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
  • moe.shizuku.manager.permission.API_V23
Close