欢迎来到天天文库
浏览记录
ID:6092842
大小:54.00 KB
页数:3页
时间:2018-01-02
《android音量调整流程+hdmi音量控制修改》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、当按键按下时,底层上报事件给KeyguardUpdateMonitor,窗口管理器WindowManager,从KeyguardUpdateMonitor获取具体按键信息,如果是Volume+/-则直接由AudioManager.java处理,调用方法adjustSuggestedStreamVolume,其参数direction包括ADJUST_LOWER(-键)、ADJUST_RAISE(+键)、ADJUST_SAME(不调整),suggestedStreamType为音频流类型,flags为特殊标志位,下面会讲到。ad
2、justSuggestedStreamVolume方法内直接通过IAudioService获取framework层的AudioService服务,AudioService针对强制使用某种音频,通过AudioSystem的JNI从HAL层获取状态,并进行切换,再执行adjustMasterVolume/adjustSuggestedStreamVolume方法,方法内部处理了STREAM_REMOTE_MUSIC和非REMOTE_MUSIC的音量调整,STREAM_REMOTE_MUSIC是在当后台播放音乐时,不在前台运行的情
3、况。adjustSuggestedStreamVolume先对当前stream获取在执行的streamtype类型,包括通话状态收音机播放,音乐播放等,此处需要hal层获取streamtype,得到streamtype后如果是STREAM_REMOTE_MUSIC,将清楚flags中的标志FLAG_PLAY_SOUND、FLAG_FIXED_VOLUME等。STREAM_REMOTE_MUSIC类型继续执行adjustRemoteVolume,否则执行adjustStreamVolume,这里主要进入adjustStream
4、Volume方法。在adjustStreamVolume方法内检查SafeMedaiVolume在插耳机情况下需提示,如果streamtypealias为STREAM_MUSIC,且设备类型包括DEVICE_OUT_AUX_DIGITAL,将添加flags标志位:flags
5、=AudioManager.FLAG_FIXED_VOLUME固定不能调节音量的设备包括:finalintmFixedVolumeDevices=AudioSystem.DEVICE_OUT_AUX_DIGITAL
6、AudioSystem.DEVICE_
7、OUT_DGTL_DOCK_HEADSET
8、AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET
9、AudioSystem.DEVICE_OUT_ALL_USB;DEVICE_OUT_AUX_DIGITAL是针对HDMI类型。最后,sendVolumeUpdate直接调用mVolumePanel.postVolumeChanged(streamType,flags)设定并显示进度条,VolumePanel内部会根据flags标志是否包含FLAG_FIXED_VOLUME,设定进度条sc.seekba
10、rView.setEnabled(false/true),VolumePanel内会有个dialog显示。至此,上层的调用过程结束。在HAL策略上只需修改一处,AudioPolicyManager的computeVolume方法,修改如下:修改前:if(stream==AudioSystem::MUSIC&&index!=mStreams[stream].mIndexMin&&(device==AUDIO_DEVICE_OUT_AUX_DIGITAL
11、
12、device==AUDIO_DEVICE_OUT_DGTL_DOCK_H
13、EADSET
14、
15、device==AUDIO_DEVICE_OUT_USB_ACCESSORY
16、
17、device==AUDIO_DEVICE_OUT_USB_DEVICE)){return1.0;}修改后:if(stream==AudioSystem::MUSIC&&index!=mStreams[stream].mIndexMin&&(//device==AUDIO_DEVICE_OUT_AUX_DIGITAL
18、
19、device==AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET
20、
21、device==AUDIO
22、_DEVICE_OUT_USB_ACCESSORY
23、
24、device==AUDIO_DEVICE_OUT_USB_DEVICE)){return1.0;}具体流程如何走到这里。对输出策略的管理上,在插HDMI时于桌面调整音量,默认不使用HDMI输出,因为在输出设备判断上有操作:if((dev
此文档下载收益归作者所有