Android Audio实战——音频焦点策略(二十三)

        前面的文章已经介绍了,音频焦点策略用于处理多个音频的发出声音时,各个音频播放状态的改变。如果不对音频播放那个进行管理,那么多声音将会一起发出,这样会严重影响人们的体验,因此在开发过程中,如果存在音频相关的功能,必须要吧空音频焦点策略。

一、音频焦点仲裁机制

        从前面的文章中可以看到,车机中的音频类型过于复杂,因此需要使用外部的音频策略去进行控制,但是仅仅通过代码去控制焦点不是很直观,因此,我们在 xml 文件中去设置了仲裁表,用于直观的观察不同的音频流类型相互的关系。

        音频焦点仲裁流程:

  • 在 CarAudioFocusPriority 中解析上面的 xml 文件;
  • CarAudioFocus 根据音频焦点矩阵去设置焦点变换的策略;
  • CarZonesAudioFocus 实现 AudioPolicy.AudioPolicyFocusListener,并且在 onAudioFocusRequest 中调用 CarAudioFocus 中的 onAudioFocusRequest;
  • 最后在 CarAudioService 中构造 AudioPolicy,然后传入 CarZonesAudioFocus,并将 AudioPolicy 注册到 AudioService 中。

二、代码分析

        下面我们就按照上面的仲裁流程对源码进

猜你喜欢

转载自blog.csdn.net/c19344881x/article/details/134812424