赞
踩
Android 系统提供了四个层面的音频 API:
1.Java 层 MediaRecorder&MediaPlayer 系列;
2.Java 层 AudioTrack&AudioRecorder 系列;
3.Jni 层 opensles;
4.JNI 层 AAudio(Android O 引入)
下面先上这张经典的 Android 系统架构图:
从图上看 Andorid 整个系统层面从下到上分以下四层:
1.Linux Kernel
2.硬件适配层
3.Framework 层(可分为 Java 层与 C++层)
4.APP 层
我们上面介绍的四个层面的音频 API 实现均在 Framework 层,其他各层音频相关有哪些功能?当我们调用某一 API 时最终是怎么驱动硬件工作的呢?下面我们先看看系统各层音频相关模块及功能。
1.1 Java 层
Java 层提供了 android.media API 与音频硬件进行交互。在内部,此代码会调用相应的 JNI 类,以访问与音频硬件交互的原生代码。
-源代码目录:frameworks/base/media/java/android/media/
1.2 JNI 层
与 android.media 关联的 JNI 代码可调用较低级别的原生代码,以访问音频硬件。JNI 位于 frameworks/base/core/jni/ 和 frameworks/base/media/jni 中。
这里调用 AAudio 和 OpenSLES 接口。
1.3 Native framework 原生框架层
不管是 Java 层还是 JNI 层都只是对外提供的接口,真正的实现在原生框架层。原生框架可提供相当于 android.media 软件包的原生软件包,从而调用 Binder IPC 代理以访问媒体服务器的特定于音频的服务。原生框架代码位于 frameworks/av/media/libmedia 或frameworks/av/media/libaudioclient中(不同版本,位置有所改变)。
1.4 Binder IPC
Binder IPC 代理用于促进跨越进程边界的通信。代理位于 frameworks/av/media/libmedia或frameworks/av/media/libaudioclient 中,并以字母“I”开头。
1.5 Audio Server
Audio 系统在 Android 中负责音频方面的数据流传输和控制功能,也负责音频设备的管理。这个部分作为 Android 的 Audio 系统的输入/输出层次,一般负责播放 PCM 声音输出和从外部获取 PCM 声音,以及管理声音设备和设置(注意:解码功能不在这里实现,在 android 系统里音频视频的解码是 opencore 或 stagefright 完成的,在解码之后才调用音频系统的接口,创建音频流并播放)。Audio 服务在 Android N(7.0)之前存在于 mediaserver 中,Android N 开始以 audioserver 形式存在,这些音频服务是与 HAL 实现进行交互的实际代码。媒体服务器位于 frameworks/av/services/audioflinger 和frameworks/av/services/audiopolicy中。
Audio 服务包含 AudioFlinger 和 AudioPolicyService:
1.6 HAL 层
HAL 定义了由音频服务调用且手机必须实现以确保音频硬件功能正常运行的标准接口。音频 HAL 接口位于 hardware/libhardware/include/hardware 中。详情可参阅 audio.h。
1.7 内核驱动层
音频驱动程序可与硬件和 HAL 实现进行交互。我们可以使用高级 Linux 音频架构 (ALSA)、开放声音系统 (OSS) 或自定义驱动程序(HAL 与驱动程序无关)。
注意:如果使用的是 ALSA,建议将 external/tinyalsa 用于驱动程序的用户部分,因为它具有兼容的许可(标准的用户模式库已获得 GPL 许可)。
Android 系统为开发者在 SDK 以及 NDK 层提供了多种音频渲染的方法,每一种渲染方法其实也是为不同的场景而设计的,我们必须要了解每一种方法的最佳实践是什么,这样在开发工作中才能如鱼得水地使用它们。
SDK 层的音频渲染
NDK 层的音频渲染
Android 系统在 NDK 层(Native 层提供的 API,即 C 或者 C++ 层可以调用的 API)提供了 2 套常用的音频渲染方法,分别是 OpenSL ES 和 AAudio,它们都是为 Android 的低延时场景(实时耳返、RTC、实时反馈交互)而设计的,下面我们一起来看一下。
以下需要注意的点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。