Persist 中文文档 下载 App

音量锁怎么弹回被其他应用改的档位

音量锁的工作原理

应用监听系统的音量变化事件(AudioManager.onAudioFocusChange / onVolumeChanged),一旦检测到被锁通道的音量被其他进程改了,立即调用 AudioManager.setStreamVolume 把它弹回锁定值。

这不是"阻止"改音量——安卓不允许第三方应用阻止,所以 Persist 的做法是改了就弹回去,速度足够快(通常 100ms 以内),用户几乎感知不到被改动过。

锁和解锁的视觉标识

主界面(音量 tab)里每条滑条左侧有个小图标:

点图标切换锁/解锁状态。

主界面音量锁状态
主界面:每条滑条左侧的图标就是音量锁按钮,灰条是已锁定,蓝条是未锁定

锁 vs 上限的区别

音量锁音量上限
方向双向守住(不允许改高也不允许改低)只守上限(不允许超过封顶值)
作用把音量钉在一个精确值给音量设一个最大值
适合静音场景、口袋场景媒体场景、防止炸响

为什么有时锁了还被改

先确认锁的是对应的那条通道——很多人只锁了响铃,但媒体/通知/系统没锁,当然还会被改。如果锁过之后仍被改,多半是省电策略把 Persist 的后台掐断了,加入电池优化白名单后恢复。

→ 见同组 锁了还被改怎么办