前面的文章已经介绍了音量调整及静音设置的相关调用,这里我们来梳理一下通过硬按键来调节音量及静音的相关调用流程。
一、硬按键调用
这里我们从 PhoneWindowManager 开始,该类主要负责管理设备上的所有窗口,包括应用程序窗口和其他系统窗口。同时负责输入事件的分发工作,包括我们这里要分析的硬按键事件。
1、PhoneWindowManager
源码位置:/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
interceptKeyBeforeDispatching
@Override
public long interceptKeyBeforeDispatching(IBinder focusedToken, KeyEvent event, int policyFlags) {
final int keyCode = event.getKeyCode();
……
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
|| keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) {
if (mUseTvRo