简介:一个音频系统包含了音频的管理、声音播放、录音和音效几个部分,这几个部分整合协作才能完成音频的功能。
首先我们先从网上拉来一些图片看一下音频的播放流程和架构。
-
播放音乐
attr -
录音
-
打电话
-
蓝牙打电话
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架构内容。
网友评论