Android audio(1)-音频模块概述
Audio模块是Android系统的重要组成部分,在 Android 中负责音频路由,数据处理,音频控制,音频设备管理/切换。
下面的内容大多翻译自android官网,读者可跳过阅读后面的博客。
一、系统架构
下图说明了音频模块的组成,并指出各组成部分所涉及的相关源代码。所谓架构就是说模块或者系统由哪些元素组成,元素分别完成什么任务,元素间如何协作。这里的元素也可以理解为成份。
应用框架
提供与android音频系统进行交互的java语言形式的API。在内部,此代码会调用相应的 JNI 类来访问音频系统的原生代码。所谓原生就是说基于linux系统利用C/C++进行开发。
JNI
与 android.media 关联的 JNI 代码负责将java调用转化为C++调用,是跨语言的媒介。本质还是运行在java进程的代码。会调用底层的C++代码来访问音频硬件。JNI 位于 frameworks/base/core/jni/ 和 frameworks/base/media/jni 中。
原生框架
原生框架相当于 android.media 软件包的原生软件包,它调用 Binder IPC 代理来访问媒体服务器的音频专属服务。 原生框架代码位于 frame