没有合适的资源?快使用搜索试试~ 我知道了~
android 2.3 中audio模块的框架结构
4星 · 超过85%的资源 需积分: 19 27 下载量 136 浏览量
2011-05-05
16:18:54
上传
评论
收藏 343KB DOC 举报
温馨提示
试读
62页
本章介绍Android的音频系统内容,主要是音频的输入/输出环节,不涉及编解码的内容。
资源推荐
资源详情
资源评论
深入浅出之
第一部分 分析
一 目的
本文的目的是通过从 系统来分析 的代码,包括 自定
义的那套机制和一些常见类的使用,比如 , 等。
分析的流程是:
先从 层对应的某个类开始,用户层先要有一个简单的使用流程。
根据这个流程,一步步进入到 ,服务层。在此过程中,碰到不熟悉或
者第一次见到的类或者方法,都会解释。也就是深度优先的方法。
1.1 分析工具
分析工具很简单,就是 和 的 文档。当然还得
有 的源代码。我这里是基于 的源码。
注意, 源码太多了,不要一股脑的加入到 中,只要把
目录下的源码加进去就可以了,后续如要用的话,再加别的目录。
二 系统
先看看 里边有哪些东西?通过 的 文档,发现主要有三个:
:这个主要是用来管理 系统的
:这个主要是用来播放声音的
:这个主要是用来录音的
其中 的理解需要考虑整个系统上声音的策略问题,例如来电
话铃声,短信铃声等,主要是策略上的问题。一般看来,最简单的就是播放声
音了。所以我们打算从 开始分析。
三 ( 层)
的 类的代码在:
!"!!#$!!!%#$ 中。
3.1 AudioTrack API 的使用例子
先看看使用例子,然后跟进去分析。至于 的其他使用方法和说明,
需要大家自己去看 文档了。
&&根据采样率,采样精度,单双声道来得到 的大小。
"'(%)'*+,,,-&&每秒 + 个点
.%/0123/4.5643114-&&双声道
.%1/453/3789:&&一个采样点 78 比特;< 个字节
&&注意,按照数字音频的知识,这个算出来的是一秒钟 ") 的大小。
&&创建
=>(
*%136/-+,,,-
.%/0123/4.5643114-
.%1/453/378-
"'-
%41319:&&
?=>%=>*9:&&开始
=>%*"3=-,-"3=%>9:&&往 中写数据
@%
=>%=*9:&&停止播放
=>%>*9:&&释放底层资源。
这里需要解释下两个东西:
7%4131 的意思:
中有 413/ 和 4131 两种分类。1
的意思是由用户在应用程序通过 方式把数据一次一次得写到
中。这个和我们在 中发送数据一样,应用层从某个地方获取数据,例
如通过编解码得到 / 数据,然后 到 。
这种方式的坏处就是总是在 层和 $ 层交互,效率损失较大。
而 / 的意思是一开始创建的时候,就把音频数据放到一个固定的
"),然后直接传给 ,后续就不用一次次得 了。
会自己播放这个 ") 中的数据。
这种方法对于铃声等内存占用较小,延时要求较高的声音来说很适用。
<=
这个在构造 的第一个参数中使用。这个参数和 中的
有关系,涉及到手机上的音频管理策略。
将系统的声音分为以下几类常见的(未写全):
132:警告声
136/:音乐声,例如 等
135:铃声
13A1:系统声音
13 4/13/22:电话声音
为什么要分这么多呢?以前在台式机上开发的时候很少知道有这么多的声音类
型,不过仔细思考下,发现这样做是有道理的。例如你在听 的时候接到
电话,这个时候 播放肯定会停止,此时你只能听到电话,如果你调节音
量的话,这个调节肯定只对电话起作用。当电话打完了,再回到 ,你肯
定不用再调节音量了。
其实系统将这几种声音的数据分开管理,所以,这个参数对 来说,
它的含义就是告诉系统,我现在想使用的是哪种类型的声音,这样系统就可以
对应管理他们了。
?
3.2 分析之 getMinBuerSize
的例子就几个函数。先看看第一个函数:
%)'*+,,,-&&每秒 + 个点
.%/0123/4.5643114-&&双声道
.%1/453/3789:
;;;;;B%
&&注意,这是个 函数
=">)'*=>0'-
>/C-.9D
???????>/(,:
???????*>/C9D
???????.%/012346344E
???????.%/0123/4.564344E
???????????>/(7:
???????????":
???????.%/0123463114E
???????.%/0123/4.5643114E
???????????>/(<:;;;B看到了吧,外面名字搞得这么酷,其实就是
指声道数
???????????":
???????>E
???????????>*F)'*9E$>>C%F9:
???????????%1433 261:
???????G
???&&目前只支持 /+ 和 /78 精度的音频
???????**.H(.%1/453/3789
???????????II*.H(.%1/453/3+99D
???????????>*F)'*9E$>%F9:
???????????%1433 261:
???????G
?????&&,对采样频率也有要求,太低或太高都不行,人耳分辨率在 <,0J 到
K,0J 之间
???????**=>0'LK,,,9MM*=>0'BK+,,,99D
???????????>*F)'*9EFN=>0'NF0'
===>%F9:
???????????%1433 261:
???????G
??????&&调用 $ 函数,够烦的,什么事情都搞到 层去。
???????'($333")3'*=>0'-
>/-.9:
???????**'((;79MM*'((,99D
???????????>*F)'*9EOF9:
???????????%14:
???????G
???????>D
???????????':
???????G
$333")3';;;B在 &"&&#&
33%== 中实现。(不了解 的一定要学习下,否则只能
在 层搞,太狭隘了。)最终对应到函数
#33333")3'*1$
P$-?#"#'-
#=>0'-#"/>-#.9
D&&注意我们传入的参数是:
&&=>0'(+,,,
&&"/>(<;
&&.(.%1/453/378
???=>:
???./:
???Q<32:
&&下面涉及到 ,这里先不解释了,
&&反正知道从 那查询了一些信息
???*EE4==>*I=>9H(
43149D
???????;7:
???G
???*EE4=./*I./9H(
43149D
???????;7:
???G
???
???*EE4=2*I29H(43149D
???????;7:
???G
剩余61页未读,继续阅读
资源评论
- mengliliulang2013-05-14哎,网上文章怎么都是一样的内容啊
- kuangrenyu2013-05-22这个资料的确有博客的,还是去看博客好,节省积分
- erpent2011-09-09晕死,这不是人家博客里的吗
- ayiso2013-03-15晕死,这不是人家博客里的吗
anli137928858
- 粉丝: 1
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功