Android中Audio框架
原址
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框架相关推荐
- Android系统Audio框架介绍(一)
原址 音频基础知识 声音有哪些重要属性呢? 响度(Loudness) 响度就是人类可以感知到的各种声音的大小,也就是音量.响度与声波的振幅有直接关系. 音调(Pitch) 音调与声音的频率有关系,当声 ...
- Android系统Audio框架介绍
音频基础知识 声音有哪些重要属性呢? 响度(Loudness) 响度就是人类可以感知到的各种声音的大小,也就是音量.响度与声波的振幅有直接关系. 音调(Pitch) 音调与声音的频率有关系,当声音的频 ...
- Android 11 Audio框架探索之AudioTracK(二)
在上一篇介绍了关于AudioPolicyService与AudioFlinger服务的启动及初始化.这里探索一下AudioTrack与AudioFlinger做了那些事情. MediaPlayer会在 ...
- Android中MVC框架的运用
MVC:是一种软件设计模式,其中M:model:指的是用来封装信息的对象.V:view:用来显示model中封装的信息的组件.C:controller:用来控制model中的信息怎么输出到view中的 ...
- Android中UIL框架特点,聊聊Android优秀的图片加载缓存的开源框架?UIL、Glide、Picasso...
今天总结下有关Android的图片开源框架UIL.Glide.Picasso.当然不止这些还有okhttp.xutlis.afinal.andbase.volley等等,今天主要是对于Glide使用进 ...
- 在Android中afinal框架下实现sqlite数据库版本升级的办法
上一篇文章采用的是SQLiteOpenHelper中的onUpgrade方法实现数据库的升级. 首先获取Context: private Context mContext=this; 然后实现Fina ...
- 框架模式MVC与MVP在Android中的应用
很多人在开发Android项目时没有考虑过架构模式的问题,以至于随着项目的增大,Activty或者Fragment中代码也会越来越多,导致项目的维护变的越来越复杂.然而在Android中使用比较多的两 ...
- Android中的单例模式(java单例模式详解,Glide,EventBus,LayoutInfalter的源码单例模式详解)
一.单例模式 (1)单例模式介绍和定义 大概意思是保证一个类在任何时候都只有一个实例在内存里,以static形式提供整个项目的访问.在Android系统中常用的地方有:创建一个SQLiteOpen ...
- Android中如何APP视屏如何去除广告
生死看淡,不服就干! http://www.wjdiankong.cn 目录视图 摘要视图 订阅 微信小程序实战项目--点餐系统 程序员11月书讯,评论得书啦 Get IT技能知识库,50个领域一键直 ...
最新文章
- Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)...
- 常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现
- 【考研保研直通车】C9高校考研真题
- python 判断div 之间的内容是否为空_python实现单向链表数据结构及其基本方法
- bzoj2152 聪聪可可
- 论文笔记_S2D.16-2016-3DV-利用全卷积残差网络进行深度预测
- 开源多语言商城 CMS 企业建站系统,MyCms v3.9 发布
- linux服务器安装字体,删除字体,详细步骤
- 格式化xml文件排版String
- 【modelsim和debussy】设置
- java中继承的介绍
- saas 测试_为什么SaaS公司需要进行安全测试?
- List的toArray()方法和toArray(T[] a)方法
- ORACLE 角色授权
- 快速查看Mac下软件的所有快捷键— CheatSheet
- 请给我一篇关于父母育儿方面书籍推荐的文案
- 【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
- 十年间学习模式的转变(反思应试教育的学习模式)
- IDEA自带接口测试工具(http client)
- 计算机域名管理机构,计算机域怎么填?