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***的补充和再封装,不知道我说的是否片面,可有人提出来

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

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android音频策略是指安卓操作系统对于设备音频功能的管理和控制策略。它包括了音频的输入、输出、路由和控制等方面。 首先,Android音频策略规定了音频输入的管理方式。通过底层API,Android可以管理和控制设备的麦克风输入。它允许应用程序访问和使用麦克风数据,进行录音或语音识别等功能。同时,音频策略还考虑了不同应用程序之间的优先级,确保高优先级的应用程序能够独占麦克风输入。 其次,音频策略还涉及音频输出的路由和管理。通过音频路由,Android可以将音频输出到不同的设备,如扬声器、耳机或蓝牙耳机。这使得用户可以根据需求选择合适的音频输出方式。此外,音频策略还允许应用程序控制音量和音调等参数,以满足用户的个性化需求。 此外,Android音频策略还考虑了多媒体的播放和通信功能。它允许多个应用程序同时使用音频功能,如同时播放背景音乐和接听电话。通过合理的资源管理和使用优先级,音频策略可以确保不同应用程序之间的协调和平衡。 最后,安卓音频策略还考虑了能耗和性能方面的因素。它通过动态调整设备的工作状态和功耗来优化音频体验。例如,在没有音频输出时,安卓可以自动关闭耳机插孔以节省电量。同时,它还可以通过优化音频处理算法和资源管理,减少对系统性能的影响。 总结来说,Android音频策略通过管理和控制音频输入、输出、路由和控制等方面,提供了全面的音频功能管理和优化能力,以提供良好的音频体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值