Skip to content

Repository files navigation

NoMixer

Work in progress

NoMixer is a fork of VolumeManager by yume-chan, reworked with a Nothing OS inspired black/white/red look and aimed at being more customizable and feature-rich over time. See NOTICE.md for a summary of what changed compared to upstream and LICENSE for licensing (GPLv2, inherited from upstream).

Control each app's volume independently. Shizuku is used to access privileged APIs.

Requires Android 13.

Download

Development builds can be produced from action artifacts once CI is configured with a signing keystore.

Usage

  1. Install and enable Shizuku
  2. Launch NoMixer and request Shizuku permission
  3. It should automatically enable its accessibility service
  4. You can change volume either from
    1. The main interface
    2. Press any volume button: a compact media volume popup appears at the edge of the screen (replacing the default volume popup), with a button to expand it into the full per-app mixer
    3. Enable accessibility button and click the button

How does it work

  1. Use AudioManager#getActivePlaybackConfigurations() to get list of AudioPlaybackConfiguration.

    Each AudioPlaybackConfiguration represents a audio player, like AudioTrack and MediaPlayer

  2. Use ActivityManager#getRunningAppProcesses() and PackageManager#getApplicationInfo() to map and group AudioPlaybackConfiguration#getClientPid() to apps

  3. Use AudioPlaybackConfiguration#getPlayerProxy() and IPlayer.setVolume() to update the internal volume multiplier

  4. Use AudioManager#registerAudioPlaybackCallback() to listen for new AudioPlaybackConfigurations and apply current volume to them.

Note

This app uses the same API as MIUI's "Adjust media sound in multiple apps". Because this API can only setting volume, not reading, the volume set by one app will not be reflected in the other one.

Credits

About

Android per app volume controller

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages