转载自http://blog..net/xiashaohua/article/details/53842337
只简单描述调用过程,需对照代码看,不画图了,也不贴代码)
1.在key Event处理部分,Phonewindow会捕获到音量按键事件,
Phonewindow.onkeydown--MediaSessionLegacyHelper.getHelper(getContext()).sendAdjustVolumeBy
2.调节音量的时候要处理3件事情,界面显示、播放提示音、调节音量,
MediaSessionManager. dispatchAdjustVolume--mService.dispatchAdjustVolume/binder-- MediaSessionService. dispatchAdjustVolume—dispatchAdjustVolumeLocked--mAudioService.adjustSuggestedStreamVolume
(如使用AudioManager,则AudioManager 的handleKeyDown、handleKeyUp也可来设置音量。
handleKeyDown--adjustSuggestedStreamVolume--MediaSessionLegacyHelper.sendAdjustVolumeBy—
)
3.在Audio模块,
mAudioService.adjustSuggestedStreamVolume(direction,suggestedStream,
flags, packageName, TAG);/binder– AudioService.adjustSuggestedStreamVolume—adjustStreamVolume/这里做了些场景处理和判断,将APS的工作