Android 13 上通过修改 AOSP 拦截 SystemUI 音量调节事件
- 定位关键代码
SystemUI 的音量调节逻辑主要集中在以下类中:
VolumeDialogController.java:负责与 AudioService 交互。
VolumeDialogImpl.java:处理 UI 交互事件(如按钮点击)。
PhoneWindowManager.java:处理物理按键事件(如音量键)。
- 拦截音量调节事件
以 VolumeDialogController 为例,修改其调整音量的核心方法:
// 文件路径: packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java
public void adjustVolume(int stream, int direction, int flags) {
// 添加拦截逻辑
if (shouldInterceptVolumeAdjust(stream, direction)) {
Log.d(TAG, "Volume adjustment intercepted");
return; // 拦截后直接返回
}
// 原有逻辑
mAudio.adjustStreamVolume(stream, direction, flags