android 音频焦点,音频策略梳理

音频焦点和音频策略两个不同的概念,容易搞混

先来看下音频焦点和音频策略直接的区别和联系

音频策略的主要功能是为该音频找到合适的硬件设备播放

1 音频策略流程: (从usage->device)

attributesBuilder.setUsage--->audioservice.mCarAudioContext--->audiomix--->audiopolicyservice---->audioflinger,

定制音频策略:需要修改两个文件即可audio_policy_configuration,car_audio_configuration(多音频区)

但系统会根据音频策略来影响音频焦点的交互,

比如决定各个音频策略之间交互时候是否拥有拒绝(不给焦点),兼容(一起用),还是配合(请求就给)的能力。

为啥说是拥有能力呢,这个只是必要条件,不是充分条件

比如想要实现兼容,往往还需要配合setWillPauseWhenDucked(false)//默认值也是false +setForceDucking(false)//闪避 才能真正实现

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.017783f(35dB),如果是DUCK_VSHAPE 降到0.2f(14db)

2 CarAudio***相关的类是对 Audio***的补充和再封装,不知道我说的是否片面,可有人提出来

接下来看看音频焦点如何定制

相关推荐
nashane32 分钟前
HarmonyOS Video组件预览图片优化实践:告别黑屏,提升视频播放体验
华为·音视频·harmonyos·harmonyos 5
科研前沿1 小时前
2026 数字孪生前沿科技:全景迭代报告 —— 镜像视界生成式孪生(Generative DT)技术白皮书
大数据·人工智能·科技·算法·音视频·空间计算
liang_jy3 小时前
Android View Tag
android
liang_jy3 小时前
Android 架构中的统一分发与策略路由
android·架构
EasyDSS3 小时前
私有化视频会议系统/视频高清直播点播EasyDSS一体化视频平台赋能各行业数字化高效协同
音视频
scan7245 小时前
长期记忆存储在数据库里
android
xingpanvip5 小时前
星盘接口开发文档:星相日历接口指南
android·开发语言·前端·css·php·lua
科研前沿7 小时前
镜像视界浙江科技有限公司的关键技术突破有哪些?
大数据·人工智能·科技·算法·音视频·空间计算
儿歌八万首8 小时前
Jetpack Compose 实战:实现一个动态平滑折线图
android·折线图·compose
东方佑9 小时前
VideoBlockTokenizer:视频色块语义token化器的设计与实现
音视频