Android Audio音频部分官网文档中文翻译

Audio

安卓音频硬件抽象层(HAL)通过 android.media 包中的音频框架 API 函数将系统上层和底层的音频驱动与硬件实体Android Audio HAL icon

联系起来。这一章节的内容包括实现安卓音频功能的方法说明以及如何提高性能。

Audio 架构


安卓音频架构决定了各音频功能模块的实现方式,并列出了相关代码在工程中的路径。


图1. 安卓音频架构图

Application framework(应用层框架)
应用层框架中包含了使用 android.media 包中的 API 函数来与音频硬件交互的应用程序代码。
在内部具体实现中,这些上层应用程序实际调用了相应的 JNI 类通过本地框架代码来完成与音频硬件的交互。
JNI(本地接口)
JNI 代码存在于 android.media 包中,通过下层的本地代码访问音频硬件。相关源码在工程中位于 framework/base/core/jni/
framework/base/media/jni/ 路径下。
Native framework(本地框架)
本地框架在系统的下层实现了一个与上层 android.media 包功能相同的库,这个库通过 Binder IPC 代理机制访问 MediaServer 进程中
音频相关的服务。本地框架的代码在工程中位于 frameworks/av/media/libmedia 路径下。 (博主注:因为底层 HAL 和 Driver 都是使用
C/C++ 编写的,当上层 APP 通过 Java Framework 发起请求时并不能直接来调用这些接口,所以需要在底层再使用 C/C++ 实现一个和
Java Framework 功能相同的 Native Framework,将 Java Framework 的调用申请翻译成底层 C/C++ 接口可以理解的请求。)
Binder IPC(Binder机制进程间通信)
Binder IPC 代理机制实现了跨进程通讯。相关代码在工程中位于 frameworks/av/media/libmedia 路径下,并以字母 I(大写i)
作为文件开头。 (博主注:Android 对于多媒体的支持并不是在 APP 需要播放/录制音频才启动一个进程来实现这个功能,
而是在系统启动时就会通过在 init.rc 文件中写入命令启动一个 MediaServer 进程,MediaServer 进程通过 MediaPlayerService 
来“监听”来自 APP 的音频播放/录制请求。从 APP 发起的音频播放/录制申请会按照 APP-->JavaFramework--> JNI-->
NativeFramework-->Binder 的流程找到 MediaServer 进程并传递多媒体操作的请求。
Media server(多媒体服务进程)
在 MediaServer 进程中含有多个音频服务,它们是真正直接和 HAL 接口进行交互的那部分。MediaServer 进程的相关代码位于工程的
frameworks/av/sevices/audioflinger/ 路径下。
HAL(硬件抽象层)
HAL 层定义了 MediaServer 中各音频服务所调用函数的标准接口,我们需要根据需求为音频硬件实现这些接口。音频 HAL 接口的代码声明
位于工程中 hardware/libhardware/include/hardware/ 路径下,更多细节请阅读该路径下的 audio.h 文件。 (博主注:如果使用的是
老版本安卓音频 HAL 架构,则代码位于 hardware/libhardware_legacy/ 路径下)
Kernel driver(内核驱动)
音频驱动向上为 HAL 提供访问接口,向下直接操作硬件。你可以使用高级Linux音频架构(ALSA)、开放音频系统架构(OSS)或自定义的
架构来编写音频驱动(HAL层并不关心底层驱动的具体实现,它们只管调用底层驱动所提供的接口函数)。

注意如果你使用的 ALSA 驱动架构,那么我们推荐你在用户空间使用external/tinyalsa 以避免证书不兼容的问题(标准的用户空间库使用 GPL 协议进行授权,而 tinyalsa 使用 BSD 协议进行授权)。

基于 Open SL ES 的 Android native audio
这部分 API 被作为 Android NDK 的一部分进行提供,和 android.media 包在音频架构中属于同一层级。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Audio.pdf是一个探讨Android平台上音频处理的技术文献。这份文献包括Android平台上音频处理的框架、音频API、音频设备的管理以及音频编解码等方面的内容。这份文献提供了开发者在Android平台上处理音频的指南以及细节处理。 文献中首先介绍了Android平台上音频处理的框架,包括音频HAL(Hardware Abstraction Layer,硬件抽象层)和音频服务等组件。它们构成了Android平台上音频处理的基本框架。接下来,文献详尽讲解了Android平台上的音频API,包括采集、播放、录制等音频处理的方法和接口。开发者可以通过这些接口对音频进行采集、分析、处理和输出。 除了讲解Android平台上的音频API,文献还介绍了音频设备的管理和音频编解码的方法。音频设备的管理包括音频输入和输出设备的选择和管理,开发者可以根据自己的需求选择合适的音频设备进行处理。音频编解码是音频处理中重要的环节,文献详细讲解了Android平台上支持的音频编解码格式和编解码工具的使用方法。 在总体指导下,文献提供了许多的小技巧和调试技巧。例如,开发人员可以利用音频缓冲区和回调对音频进行高效处理,还可以通过调节音量等参数来优化音频体验。 总之,Android Audio.pdf提供了一份详尽而系统的文献给Android开发人员。开发人员可以根据本文档的指南和细节处理,自行进行音频处理的开发和设计。 ### 回答2: Android Audio.pdf是一本关于Android系统音频开发的文档。这本文档主要介绍了如何在Android平台上开发音频应用和音频驱动程序。它包含了很多关于音频处理、音频采集和音频播放方面的重要信息。 文档的第一章介绍了Android平台上的音频系统架构,包括了音频模块的结构和音频设备的特点。第二章介绍了音频硬件驱动程序的编写,讲解了如何通过HAL(硬件抽象层)与操作系统通信以及如何通过Audio Flinger进行音频数据的传输。第三章介绍了Android平台上的音频采集和处理技术,讲解了Android音频引擎的基础知识、音频采集、音频输出等相关问题。最后一章介绍了Android音频应用开发的一些常用API和开发过程中的一些技巧,便于开发者更好的开发音频应用程序。 总的来说,这本文档提供了很多有关Android音频开发方面的详细信息,包括了硬件驱动程序、音频采集和处理等重要技术方面的内容,对于想要在Android平台上开发音频应用或研究音频技术的人来说都非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值