Android 音频架构定义了音频功能的实现方式,并指出实现中所涉及的相关源代码。

  • 应用框架
    应用框架包含应用代码,该代码可使用 android.media API 与音频硬件进行交互。在内部,此代码会调用相应的 JNI 粘合类,以访问与音频硬件交互的原生代码。
    源代码目录:frameworks/base/media/java/android/media/
  • AudioManager:音频管理器,包括音量管理、AudioFocus管理、音频设备管理、模式管理;
  • 录音:AudioRecord、MediaRecorder,采集音频数据;
  • 播放:AudioTrack、MedaiPlayer、SoundPool、ToneGenerator,播放数据api;
  • 编解码:MediaCodec,音视频数据 编解码接口。
  • JNI
    与 android.media 关联的 JNI 代码可调用较低级别的原生代码,以访问音频硬件。JNI 位于 frameworks/base/core/jni/ 和 frameworks/base/media/jni 中。
  • Native framework 原生框架
    原生框架可提供相当于 android.media 软件包的原生软件包,从而调用 Binder IPC 代理以访问媒体服务器的特定于音频的服务。原生框架代码位于 frameworks/av/media/libmedia 或frameworks/av/media/libaudioclient中(不同版本,位置有所改变)。
  • Binder IPC
    Binder IPC 代理用于促进跨越进程边界的通信。代理位于 frameworks/av/media/libmedia或frameworks/av/media/libaudioclient 中,并以字母“I”开头。
  • server
    Audio服务在Android N(7.0)之前存在于mediaserver中,Android N开始以audioserver形式存在,这些音频服务是与您的 HAL 实现进行交互的实际代码。媒体服务器位于 frameworks/av/services/audioflinger 和frameworks/av/services/audiopolicy中。

Audio服务包含AudioFlinger 和AudioPolicyService

  • AudioFlinger:主要负责音频流设备的管理以及音频流数据的处理传输,⾳量计算,重采样、混⾳、⾳效等。
  • AudioPolicyService:主要负责⾳频策略相关,⾳量调节⽣效,设备选择,⾳频通路选择等。
  • HAL
    HAL 定义了由音频服务调用且您必须实现以确保音频硬件功能正常运行的标准接口。音频 HAL 接口位于 hardware/libhardware/include/hardware 中。如需了解详情,请参阅 audio.h。
  • 内核驱动程序
    音频驱动程序可与您的硬件和 HAL 实现进行交互。您可以使用高级 Linux 音频架构 (ALSA)、开放声音系统 (OSS) 或自定义驱动程序(HAL 与驱动程序无关)。
    注意:如果您使用的是 ALSA,建议将 external/tinyalsa 用于驱动程序的用户部分,因为它具有兼容的许可(标准的用户模式库已获得 GPL 许可)。

Android 的音频硬件抽象层 (HAL) 可将 android.media 中特定于音频的较高级别框架 API 连接到底层音频驱动程序和硬件。

Android 音频架构相关推荐

  1. Android音频架构工程师开篇引言

    Android音频架构师 目的 风格 受众 文章结构 更新进度 目的 写这样一个专栏的初衷,是因为本人在2019年上半年入职目前这家公司,最初入职的职位是驱动工程师,一开始从事的内容也都是驱动这一块的 ...

  2. Android音频架构

     主要分为四个层次: 1.最底层是硬件层: 2.在这之上的是驱动层,这一层一般codec芯片会给一个基本的驱动示例: 3.在这之上是Linux的框架层,ALSA, 4.这之上是安卓audio管理层: ...

  3. Android音频架构概览

    FROM:http://www.bobbog.com/archives/147 ============================ 一.架构图 二.MediaServer初始化 所有的media ...

  4. Android 音频(Audio)架构

    一.概述 Android 的音频硬件抽象层 (HAL) 可将 android.media 中特定于音频的较高级别的框架 API 连接到底层音频驱动程序和硬件.本部分介绍了有关提升性能的实现说明和提示. ...

  5. Android P的音频架构(二)

    Android P的音频策略分析 本文主要讲解AudioPolicy部分,对音频策略流程的分析,音频策略代码在frameworks\av\services\audiopolicy中. 相关定义: fr ...

  6. android 音频增益_参考级音频播放器!七彩虹发布Pocket HIFI U6:4999亲民价

    作为国产HiFi音频的老牌厂商,七彩虹去年年中推出了新旗舰播放器Pocket HIFI U8,时隔一年U系旗下第二款参考级播放器又来了,型号为"Pocket HIFI U6",将于 ...

  7. Android系统架构图及简单的系统架构介绍

    2019独角兽企业重金招聘Python工程师标准>>> ndroid的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层. ...

  8. Android系统架构基本模式解析

    Android系统架构总共被分为四层,在这里大家就可以通过介绍对这四个层次进行一个深入的解读,以加深大家对这一系统的认识. 如今,大家面对市场中种类繁多的手机必然挑的眼花缭乱.不过,在智能手机占据主要 ...

  9. Android MediaRecorder架构详解

    1. 简介 在android中录制音频有两种方式,MediaRecorder和AudioRecord.两者的区别如下: (1) MediaRecorder 简单方便,不需要理会中间录制过程,结束录制后 ...

最新文章

  1. 聊聊flink JobManager的heap大小设置
  2. Android之给图片去色,返回灰度图片以及ColorMatrix中setSaturation方法的用法
  3. oracle临时表的优点,详解Oracle临时表的几种用法和意义
  4. Nexys4DDR+OV7670实现sobel算子边缘检测系统
  5. vgh电压高了有什么_智能变频电源的功能是什么?
  6. laravel 队列学习
  7. 外媒:科学家首次探测到黑洞吞噬中子星
  8. 从PRISM开始学WPF(九)交互Interaction?
  9. RabbitMQ安装---rpm安装
  10. 功夫小子实践开发-基本工具类的分析和实现
  11. c语言编程n元一次方程,解n元一次方程
  12. 又一次全球第一!| 凌云时刻
  13. NumPy学习笔记之argsort()函数
  14. 如何编写一份高质量的测试报告
  15. 在衣食住行上训练专注力
  16. 【题解】CSP-J2021第二轮题解
  17. YUV图解 (YUV444, YUV422, YUV420, YV12, NV12, NV21)
  18. java iterator 转 list_JAVA Iterator 转成 List
  19. Java反序列化之反射机制
  20. AutoCAD Lisp LSP小程序 实现面积注记

热门文章

  1. 猿创征文|使用SQL创建学生信息管理数据库(完整)
  2. 公司AppleID的申请详细流程
  3. Elasticsearch java API (11)Search API scrolls
  4. 龙佰集团拟35亿投建20万吨锂电负极项目 钛白粉龙头转型可期
  5. 春节后面试别人的经历总结之二,好岗位分享给还在找工作中的软件开发爱好者们...
  6. matlab作图m_map,m_map1.4 地理绘图软件,适用于matlab绘制各种 信息图 包含海洋站位图等 Windows Develop 271万源代码下载- www.pudn.com...
  7. 数值分析-龙格库塔法
  8. 量子力学 or 线性代数(四)?
  9. RANSAC和SAC-IA
  10. 【转载】Amit’s A star Page 中译文