SystemUI 音量虚拟按键调节音量流程
1、首先查看 音量键的布局文件
./frameworks/base/packages/SystemUI/res/layout/volume_add.xml
音量加减键都是自定义控件 com.android.systemui.statusbar.policy.KeyButtonView
2、自定义控件里面有重写 onTouchEvent,判断mCode值 即是 keyCode 不为0 后 直接通过sendEvent 发送按键值
3、按键通过 InputManager 发送 由 frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java 截取处理按键消息
再由 AudioManager.java 处理音量加减
,h
3、此时回过来查看SystemUI 音量调节框显示 frameworks/base/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
构造函数有使用到 VolumeDialogController 控制器 并且注册了mControllerCallbackH 和 mHandler
4、查看 VolumeDialogController 源码 VolumeDialogController 有注册 声音调节的广播接收。
广播接收有处理音量的变化 mCallbacks.onStateChanged 即回调了 VolumeDialog 里面的 onStateChangedH 到此完成音量调节和SystemUI 音量调节
UI的更新