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

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

为啥又搞起framwork audio了,因为喜欢,不是因为找不到活干,哈哈。

本想找个专业领域做专,做强,没想到居然给做死了。或者说是高德把它做的没技术含量了

相关推荐

  1. android 音频焦点音频策略梳理

    2024-03-21 05:34:09       50 阅读
  2. Android 音频焦点管理

    2024-03-21 05:34:09       62 阅读
  3. Android音频焦点

    2024-03-21 05:34:09       28 阅读
  4. Android Audio Focus 音频焦点

    2024-03-21 05:34:09       71 阅读
  5. 自定义android音频焦点

    2024-03-21 05:34:09       39 阅读
  6. Android 监听音频焦点变化

    2024-03-21 05:34:09       36 阅读
  7. Android Audio实战——音频焦点监听(十)

    2024-03-21 05:34:09       60 阅读
  8. Android14音频进阶之AAOS音频焦点(七十一)

    2024-03-21 05:34:09       31 阅读
  9. 零基础入门多媒体音频(2)-音频焦点

    2024-03-21 05:34:09       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-21 05:34:09       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-21 05:34:09       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-21 05:34:09       82 阅读
  4. Python语言-面向对象

    2024-03-21 05:34:09       91 阅读

热门阅读

  1. 《PHP 魔法之旅:探索基础知识与技巧》

    2024-03-21 05:34:09       42 阅读
  2. Mac中用python安装lightgbm报错image not found

    2024-03-21 05:34:09       41 阅读
  3. Selenium 学习(0.21)——软件测试之单元测试

    2024-03-21 05:34:09       41 阅读
  4. Stable Diffusion训练图片时,简陋的数据处理

    2024-03-21 05:34:09       32 阅读