一、前言
从入职深圳这边的公司之后,已经做了两款声卡codec的移植了。想着今天没事,我又从网上搜索了一些资料,大概介绍一下安卓平台下的音频架构。
二、安卓音频架构
Linux早期的时候,内核所支持的音频框架叫做OSS,后面被ALSA框架所取代。
安卓音频架构正是基于ALSA框架所建立的一套音频体系架构。
大致框架如下:
Java服务AudioManager作为服务端,本地服务AudioFlinger作为客户端,两者通过Binder机制交互。AudioFlinger对硬件功能的具体实现(比如setMode设置电话/蓝牙/录音等模式)交给硬件抽象层AlsaHAL完成。抽象层可以调用本地标准接口,比如直接调用Alsa-lib库去操作底层驱动。