Android Audio 架构

简介:一个音频系统包含了音频的管理、声音播放、录音和音效几个部分,这几个部分整合协作才能完成音频的功能。

首先我们先从网上拉来一些图片看一下音频的播放流程和架构。

  1. 播放音乐


    attr
  2. 录音


  3. 打电话



  4. 蓝牙打电话



Note: DAI - Digital Audio Interface 其实就是I2S/PCM/AC97**

下面我们来正式介绍一下Android系统上的Audio架构

如图所示:


Android的Audio架构分为三大部分:Kernel Space、User Space、App

  • Kernel Space -> Audio Codec Driver :OSS -以前的Linux音频体系结构,被ASLA取代并兼容(ASLA -Advanced Sound Linux Architecture)** 驱动程序来实现
  • User Space(主要讲解):
    • FrameWork: 为便利上层App所设计提供,主要包含AudioManager、AudioService及AudioSystem类,还有AudioTrack、AudioRecord、MediaPlayer、MediaRecord类。
    • Libraries(AudioFlinger):作为Audio系统的核心中控台,是Audio的本地服务,打开hal层的动态库。AudioFlinger继承libmedia中的接口,提供实现库libaudioflinger.so。这部分内容没有对外开放,上层是通过调用的libmedia部分的接口。
    • HAL :从设计上来看,硬件抽象层是AudioFlinger直接访问的对象。这说明了两个问题,一方面AudioFlinger并不直接调用底层的驱动程 序;另一方面,AudioFlinger上层(包括和它同一层的MediaPlayerService)的模块只需要与它进行交互就可以实现音频相关的功 能了。因而我们可以认为AudioFlinger是Android音频系统中真正的“隔离板”,无论下面如何变化,上层的实现都可以保持兼容。
  • App:调用者(这里不做介绍)

以上就是我们所介绍的Android Audio架构内容。

你可能感兴趣的:(Android Audio 架构)