音频框架
- 音频框架的组成:
a) 应用层:应用厂商根据特定需求袭击写的各种音频处理apk
b) 框架层:供开发音频相关产品时使用的java类
c) JNI层:屏蔽了对Audio本地框架调用细节,相当于Java接口本地中转
d) 库层:
i. client部分:JNI层调用对应的本地实现,通过binder与server交互;
ii. server部分:系统服务,是Android音频系统中最核心的部分;
e) HAL层:音频的硬件抽象层,不同类型的音频设备对应不同的HAL层。
f) tinyalsa:封装给用户态调用音频驱动ALSA架构接口的一个精简库。 - AudioFlinger:音频系统中的核心服务,是Android音频系统的中枢,是各功能的主要执行者。它同时也是一个系统服务,为上层提供访问接口,并直接与HAL(音频的硬件抽象层)进行交互。是音频策略的执行者,管理不同HAL层的打开和关闭,对不同的AudioTrack数据进行处理,包括混音、重采样、音效、音量控制。
- AudioPolicyService:音频系统中关于策略的重要服务,是Android音频策略的制定者。根据用户配置来指导AudioFlinger加载支持的设备HAL,对不同stream类型制定选择设备的优先级策略。
- MediaPlayerService:多媒体系统中的重要服务;
- CameraService:有关摄像/照相