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.
Development builds can be produced from action artifacts once CI is configured with a signing keystore.
- Install and enable Shizuku
- Launch NoMixer and request Shizuku permission
- It should automatically enable its accessibility service
- You can change volume either from
- The main interface
- 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
- Enable accessibility button and click the button
-
Use
AudioManager#getActivePlaybackConfigurations()to get list ofAudioPlaybackConfiguration.Each
AudioPlaybackConfigurationrepresents a audio player, likeAudioTrackandMediaPlayer -
Use
ActivityManager#getRunningAppProcesses()andPackageManager#getApplicationInfo()to map and groupAudioPlaybackConfiguration#getClientPid()to apps -
Use
AudioPlaybackConfiguration#getPlayerProxy()andIPlayer.setVolume()to update the internal volume multiplier -
Use
AudioManager#registerAudioPlaybackCallback()to listen for newAudioPlaybackConfigurations and apply current volume to them.
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.
- Original app: VolumeManager by yume-chan, licensed under GPLv2.
- Shizuku for privileged API access without root.