ANDROIDAudio音效的设置和控制解读.doc

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ANDROIDAudio音效的设置和控制解读

ArcherMind Inc. Confidential Audio音效的设置和控制 学习总结 History 12年04月23日 V1 完成文档 Author 王京阳 目录 1.0 Audio系统综述 2 1.1 Audio系统结构 3 1.2 Audio系统代码位置 4 1.3 Audio系统和上层接口 5 1.3.1 Audio系统的各个层次 5 1.3.2 media库中的Audio框架部分 6 1.3.3 AudioFlinger本地代码 8 1.3.4 Audio系统的JNI代码 9 1.3.5 Audio系统的Java代码 9 2.0 音效设置及控制 11 2.1 不同类型声音资源的设置 11 2.2 拍照/录音时候的声音文件 12 2.3 默认铃声的设置 14 2.4 拨号界面专属拨号按键音设置 17 2.5 添加音频效果的设置项 19 2.6 音量控制 24 2.7 音频系统 27 2.7.1 音频类型 28 2.7.2 输入输出设备 28 2.7.3 音频策略管理 30 2.8 RingerMode 31 2.8.1利用AudioManager使用RingerMode 31 2.8.2 RingerMode在AudioService中内部实现 31 2.8.3 配置RingerMode对特定AudioStream的影响 32 1.0 Audio系统综述 Audio系统在Android中负责音频方面输入/输出层次,一般负责播放PCM声音输出和从外部获取PCM声音,以及管理声音设备和设置。 1.1 Audio系统结构 主要分成如下几个层次: (1)media库提供的Audio系统本地部分接口; (2)AudioFlinger作为Audio系统的中间层; (3)Audio的硬件抽象层提供底层支持; (4)Audio接口通过JNI和Java框架提供给上层。 Audio系统的各个层次接口主要提供了两方面功能:放音(Track)和录音(Recorder)。 Android的Audio系统结构如图1-1所示。 图1.1Android的audio系统结构 1.2 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/services/audioflinger(注:android2.3) 这部分内容被编译成库libaudioflinger.so,它是Audio系统的本地服务部分。 (5)Audio的硬件抽象层接口 头文件路径:hardware/libhardware_legacy/include/hardware/ Audio硬件抽象层的实现在各个系统中可能是不同的,需要使用代码去继承相应的类并实现它们,作为Android系统本地框架层和驱动程序接口。 1.3 Audio系统和上层接口 在Android中,Audio系统自上而下由Java的Audio类、Audio本地框架类、AudioFlinger和Audio的硬件抽象层几个部分组成。 1.3.1 Audio系统的各个层次 Audio本地框架类是libmedia.so的一个部分,这些Audio接口对上层提供接口,由下层的本地代码去实现。 AudioFlinger继承libmeida中的接口,提供实现库libaudiofilnger.so。这部分内容没有自己的对外头文件,上层调用的只是libmedia本部分的接口,但实际调用的内容是libaudioflinger.so。 Audio使用JNI和Java对上层提供接口,JNI部分通过调用libmedia库提供的接口来实现。 Audio的硬件抽象层提供到硬件的接口,供AudioFlinger调用。

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档