武威 网站开发,百度网页制作html,王烨画家,玛沁县wap网站建设公司音频焦点和音频策略两个不同的概念#xff0c;容易搞混 先来看下音频焦点和音频策略直接的区别和联系 音频策略的主要功能是为该音频找到合适的硬件设备播放
1 音频策略流程#xff1a; (从usage-device)
attributesBuilder.setUsage---audioservice.mCarAudioCont…音频焦点和音频策略两个不同的概念容易搞混 先来看下音频焦点和音频策略直接的区别和联系 音频策略的主要功能是为该音频找到合适的硬件设备播放
1 音频策略流程 (从usage-device)
attributesBuilder.setUsage---audioservice.mCarAudioContext---audiomix---audiopolicyservice----audioflinger, 定制音频策略需要修改两个文件即可audio_policy_configuration,car_audio_configuration多音频区
但系统会根据音频策略来影响音频焦点的交互 比如决定各个音频策略之间交互时候是否拥有拒绝不给焦点兼容一起用还是配合请求就给的能力。 为啥说是拥有能力呢这个只是必要条件不是充分条件 比如想要实现兼容往往还需要配合setWillPauseWhenDucked(false)//默认值也是false setForceDuckingfalse//闪避 才能真正实现
2 弄清了音频策略再来看音频焦点 有三种请求方式 AUDIOFOCUS_GAIN //要求原来的失去焦点想要需重新申请 AUDIOFOCUS_GAIN_TRANSIENT //要求原来的短暂失去焦点并下次自动获取焦点 AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK //要求原来的短暂失去焦点并下次自动获取焦点降低音量用户可选 AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE//要求原来的短暂失去焦点并下次自动获取焦点停止播放用户可选 用户可选意思是你可以自己定义要不要这样做新版本 降低音量默认是实现了的 新版本车机有了音频区的概念这个还好以前是一个栈管理焦点的出栈入栈现在相当于有多个栈管理各个区管理各个区的。 用法也比较简单 原来的AudioAttributes 里面添加一个bundle bundle里面加入音频区的id即可 好了焦点的就整理到这里虽然好几年没看了但发现变化不大。
3 把做车机导航时候遇到的音频问题也记录下 1 导航播放时候音乐自动降音但是降的太多要哪里修改呢 在AudioService--PlaybackActivityMonitor.duckPlayers-DuckingManager.duckUid-DuckedApp.addDuck-AudioPlaybackConfiguration.getPlayerProxy().applyVolumeShaper() 如果是STRONG_DUCK_VSHAPE--降到0.017783f35dB如果是DUCK_VSHAPE 降到0.2f14db 2 CarAudio***相关的类是对 Audio***的补充和再封装不知道我说的是否片面可有人提出来
接下来看看音频焦点如何定制