当前位置: 首页 > news >正文

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

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

http://www.lryc.cn/news/324195.html

相关文章:

  • go语言-基础元素与结构的使用
  • 【leetcode热题】 二叉树的右视图
  • 康奋威科技邀您到场参观2024长三角快递物流展
  • linux centos 安装jenkins,并构建spring boot项目
  • 是德科技keysight DSOX3024T示波器
  • C#获取HTML源码
  • element-ui checkbox 组件源码分享
  • JavaEE--小Demo--数据库建立
  • 读算法的陷阱:超级平台、算法垄断与场景欺骗笔记19_前方的路
  • MySQL双一参数性能测试
  • CodeSys创建自定义的html5控件
  • Xcode15报错: SDK does not contain ‘libarclite‘
  • 矩阵快速幂
  • 数据之谜:解读Facebook的用户行为
  • 学习 考证 帆软 FCP-FineBI V6.0 考试经验
  • 《过滤器模式(极简c++)》
  • 【C++】如何用一个哈希表同时封装出unordered_set与unordered_map
  • Day45:WEB攻防-PHP应用SQL二次注入堆叠执行DNS带外功能点黑白盒条件
  • web安全之:三种常见的Web安全威胁
  • C#,图论与图算法,用于检查给定图是否为欧拉图(Eulerian Graph)的算法与源程序
  • Dubbo框架的介绍
  • 手机实时监控电脑屏幕(手机可以看到电脑在干什么吗)
  • 合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信息提取、监测
  • 云原生(五)、Docker-Swarm集群
  • arm核的DMPIS是如何计算的
  • Axure RP 9 for Mac中文激活版:原型设计工具
  • Hive 数据迁移与备份
  • FFMpeg 获取音频音量、提高音量
  • 【java数据结构】基于java提供的ArrayList实现的扑克牌游戏-(附源码~)
  • R语言:microeco:一个用于微生物群落生态学数据挖掘的R包,第八:trans_func class