转自:http://book.51cto.com/art/201001/179672.htm

第7章Android的Audio系统

本章介绍Android的音频系统内容,主要是音频的输入/输出环节,不涉及编解码的内容(音频系统从驱动程序、本地框架到Java框架都具有内容)。本章介绍Audio系统各个层次的内容、Audio硬件抽象层的实现。

在学习本章的过程中,读者应重点关注以下内容:

Audio系统结构(知识性内容)

在Java中调用Audio系统的方式(知识性内容)

Audio系统本地代码的接口(开发要点)

Audio硬件抽象层的实现(开发要点)

7.1 Audio系统综述

Audio系统在Android中负责音频方面的数据流传输和控制功能,也负责音频设备的管理。这个部分作为Android的Audio系统的输入/输出层次,一般负责播放PCM声音输出和从外部获取PCM声音,以及管理声音设备和设置。

Audio系统主要分成如下几个层次:

(1)media库提供的Audio系统本地部分接口;

(2)AudioFlinger作为Audio系统的中间层;

(3)Audio的硬件抽象层提供底层支持;

(4)Audio接口通过JNI和Java框架提供给上层。

Audio系统的各个层次接口主要提供了两方面功能:放音(Track)和录音(Recorder)。

Android的Audio系统结构如图7-1所示。

图7-1 Android的Audio系统结构

Android系统的代码分布情况如下所示:

(1)Audio的Java部分

代码路径:frameworks/base/media/java/android/media

与Audio相关的Java包是android.media,主要包含AudioManager和Audio系统的几个类。

(2)Audio的JNI部分

代码路径:frameworks/base/core/jni

生成库libandroid_runtime.so,Audio的JNI是其中的一个部分。

(3)Audio的框架部分

头文件路径:frameworks/base/include/media/

源代码路径:frameworks/base/media/libmedia/

Audio本地框架是media库的一部分,本部分内容被编译成库libmedia.so,提供Audio部分的接口(包括基于Binder的IPC机制)。

(4)Audio Flinger

代码路径:frameworks/base/libs/audioflinger

这部分内容被编译成库libaudioflinger.so,它是Audio系统的本地服务部分。

(5)Audio的硬件抽象层接口

头文件路径:hardware/libhardware_legacy/include/hardware/

Audio硬件抽象层的实现在各个系统中可能是不同的,需要使用代码去继承相应的类并实现它们,作为Android系统本地框架层和驱动程序接口。

更多相关文章

  1. 系统学习android开发技术 android三部曲
  2. 浅析Android.jar文件中的包
  3. Android(安卓)Camera HAL3 - MultiCamera-HALBufferManager
  4. Android(安卓)系统入门
  5. Android(安卓)ADB简单命令入门及原理介绍
  6. Android个层次调用流程概述
  7. Android中Intent中如何传递对象
  8. 深入浅出 - Android系统移植与平台开发(四)- Android启动流程
  9. Maemo VS Android

随机推荐

  1. android > 读取http html 内容
  2. 几本适合新手的Android电子书(提供下载)
  3. Android任意时刻、任意代码处全屏
  4. :app:uploadCrashlyticsMappingFileRelea
  5. android页面布局
  6. AndroidManifest.xml文件详解(uses-sdk)
  7. Android实现图片的倒影效果
  8. 【Android】对JSONObject抛ConcurrentMod
  9. android 自动提示 中文
  10. android上传图片(同步上传)