原址

原文链接

Android中的音频硬件抽象层(HAL)连接android.media中高层的,特定音频框架API到底层的音频驱动和硬件

下列图表描述了音频功能是如何实现的,以及相关实现的相关源代码。

应用框架(Application framework)

在应用框架层的是App代码,它利用android.media的API来和audio硬件交互,内部该代码调用相应的JNI胶水类来访问本地代码,以与音频硬件进行交互。

JNI(Java Native Interface)

与android.media相关的JNI代码在frameworks/base/core/jni和frameworks/base/media/jni目录中,该代码调用底层的本地代码以获得对音频硬件的访问。

本地框架(Native framework)

本地框架定义在frameworks/av/media/libmedia,提供一个等效于android.media包的本地代码。本地框架调用Binder IPC代理以获取对媒体服务器中特定音频服务的访问。

Binder IPC

The Binder IPC代理完成进程之间的通信,该代码定义在frameworks/av/media/libmedia目录中,其由字母“I”开头

媒体服务器(Media Server)

媒体服务器中的audio service,定义在frameworks/av/services/audioflinger,该代码才是真正与HAL实现交互的代码。

硬件抽象层(HAL)

HAL定义了audio services调用的标准接口,但同时必须正确地实现音频硬件功能,音频硬件抽象层接口定义在hardware/libhardware/include/hardware。更多细节参考audio.h

内核驱动(Kernel Driver)

音频驱动与硬件和HAL实现进行交互,可以选择使用ALSA,OSS或定义你自己的驱动。HAL是不知道底层驱动实现细节的。

注:若选择了ALSA,推荐使用external/tinyalsa作为驱动的用户部分。

参看audio部分剩下的部分用于实现,以改善性能。

http://source.android.com/devices/audio.html

Android中Audio框架相关推荐

  1. Android系统Audio框架介绍(一)

    原址 音频基础知识 声音有哪些重要属性呢? 响度(Loudness) 响度就是人类可以感知到的各种声音的大小,也就是音量.响度与声波的振幅有直接关系. 音调(Pitch) 音调与声音的频率有关系,当声 ...

  2. Android系统Audio框架介绍

    音频基础知识 声音有哪些重要属性呢? 响度(Loudness) 响度就是人类可以感知到的各种声音的大小,也就是音量.响度与声波的振幅有直接关系. 音调(Pitch) 音调与声音的频率有关系,当声音的频 ...

  3. Android 11 Audio框架探索之AudioTracK(二)

    在上一篇介绍了关于AudioPolicyService与AudioFlinger服务的启动及初始化.这里探索一下AudioTrack与AudioFlinger做了那些事情. MediaPlayer会在 ...

  4. Android中MVC框架的运用

    MVC:是一种软件设计模式,其中M:model:指的是用来封装信息的对象.V:view:用来显示model中封装的信息的组件.C:controller:用来控制model中的信息怎么输出到view中的 ...

  5. Android中UIL框架特点,聊聊Android优秀的图片加载缓存的开源框架?UIL、Glide、Picasso...

    今天总结下有关Android的图片开源框架UIL.Glide.Picasso.当然不止这些还有okhttp.xutlis.afinal.andbase.volley等等,今天主要是对于Glide使用进 ...

  6. 在Android中afinal框架下实现sqlite数据库版本升级的办法

    上一篇文章采用的是SQLiteOpenHelper中的onUpgrade方法实现数据库的升级. 首先获取Context: private Context mContext=this; 然后实现Fina ...

  7. 框架模式MVC与MVP在Android中的应用

    很多人在开发Android项目时没有考虑过架构模式的问题,以至于随着项目的增大,Activty或者Fragment中代码也会越来越多,导致项目的维护变的越来越复杂.然而在Android中使用比较多的两 ...

  8. Android中的单例模式(java单例模式详解,Glide,EventBus,LayoutInfalter的源码单例模式详解)

    一.单例模式 (1)单例模式介绍和定义 ​ 大概意思是保证一个类在任何时候都只有一个实例在内存里,以static形式提供整个项目的访问.在Android系统中常用的地方有:创建一个SQLiteOpen ...

  9. Android中如何APP视屏如何去除广告

    生死看淡,不服就干! http://www.wjdiankong.cn 目录视图 摘要视图 订阅 微信小程序实战项目--点餐系统 程序员11月书讯,评论得书啦 Get IT技能知识库,50个领域一键直 ...

最新文章

  1. Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)...
  2. 常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现
  3. 【考研保研直通车】C9高校考研真题
  4. python 判断div 之间的内容是否为空_python实现单向链表数据结构及其基本方法
  5. bzoj2152 聪聪可可
  6. 论文笔记_S2D.16-2016-3DV-利用全卷积残差网络进行深度预测
  7. 开源多语言商城 CMS 企业建站系统,MyCms v3.9 发布
  8. linux服务器安装字体,删除字体,详细步骤
  9. 格式化xml文件排版String
  10. 【modelsim和debussy】设置
  11. java中继承的介绍
  12. saas 测试_为什么SaaS公司需要进行安全测试?
  13. List的toArray()方法和toArray(T[] a)方法
  14. ORACLE 角色授权
  15. 快速查看Mac下软件的所有快捷键— CheatSheet
  16. 请给我一篇关于父母育儿方面书籍推荐的文案
  17. 【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
  18. 十年间学习模式的转变(反思应试教育的学习模式)
  19. IDEA自带接口测试工具(http client)
  20. 计算机域名管理机构,计算机域怎么填?

热门文章

  1. 文件管理类函数(1)
  2. 一段MYSQL的插入代码
  3. 走进 Growth Hacker 的世界
  4. Web开发的未来:React、Falcor和ES6
  5. Node.js 推荐20多个学习网站及书籍
  6. Vue学习笔记之04-computed计算属性
  7. redis 集群_Redis集群部署
  8. python sorted下标_Python列表实用的代码片段
  9. python车牌字符分割_OpenCV+Python识别车牌和字符分割的实现
  10. linux安装svn(yum安装)