1、音量键处理流程的发起者是PhoneWindow。AudioManager仅仅起到代理的作用。
2、AudioService接受AudioManager的调用请求,操作VolumeStreamState的实例进行音量的设置。
3、VolumeStreamState负责保存音量设置,并且提供了将音量设置到底层的方法。AudioService负责将设置结果以广播的形式通知外界。
4、keycode用来判断音量增减,AudioManager.ADJUST_RAISE 表示增大,ADJUST_LOWER表示降低。
5、第一个参数direction指示了音量的调整方向,1为增大,-1为减小;第二个参数suggestedStreamType表示要求调整音量的流类型
6、第三个参数flags,其实是在AudioManager在handleKeyDown()中设置了两个flags,分别是FLAG_SHOW_UI和FLAG_VIBRATE。前者告诉AudioService需要弹出一个音量控制面板。
7、而在handleKeyUp()里设置了FLAG_PLAY_SOUND,这是为什么在松开音量键后”有时候“(在特定的流类型下,且没有处于锁屏状态)会有一个提示音。