欢迎来到天天文库
浏览记录
ID:41550082
大小:179.13 KB
页数:29页
时间:2019-08-27
《ANDROIDAudio音效的设置和控制》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、ArcherMindInc.ConfidentialFmuiTwamin口学习总结HistoryAuthor王京阳目录1.0Audio系统综述21.1Audio系统结构31.2Audio系统代码位置41.3Audio系统和上层接口51.3.1Audio系统的各个层次51.3.2media库中的Audio框架部分61.3.3AudioFlinger本地代码81.3.4Audio系统的JNI代码91.3.5Audio系统的Java代码92.0音效设置及控制112.1不同类型声音资源的设置112.2拍照/录音时候的声音文件122.3默认铃声的设置142.4拨号界面专属拨号按键音设置17
2、2.5添加音频效果的设置项192.6音量控制242.7音频系统272.7.1音频类型282.7.2爺y入篇了出设备282.7.3音频策略管理302.8RingerMode312.8.1禾I]用AudioManager使用RingerMode312.&2RingerMode在AudioService中内部实现312.&3配置RingerMode对特定AudioStream的影响321.0Audio系统综述Audio系统在Android中负责音频方面输入/输出层次,一般负责播放PCM声音输出和从外部获取PCM声音,以及管理声音设备和设置。1.1Audio系统结构主要分成如下几个层次:
3、(1)media库提供的Audio系统本地部分接口;(2)AudioFIinger作为Audio系统的中间层;(1)Audio的硬件抽象层提供底层支持;(2)Audio接口通过JNI和Java框架提供给上层。Audio系统的各个层次接口主要提供了两方面功能:放音(Track)和录音(Recorder)。Android的Audio系统结构如图1-1所示。Java框架'JavaAudioClass11Audio本地APIAudioJNI1AudioHardwareinterface△AudioDriverAudioHAL(libaudiaso)//7//AudioFlinger(li
4、baudioflingerso)c框架HAudioGeneric內核空间II/dev/eac图1.lAndroid的audio系统结构1.2Audio系统代码位置Android系统的代码分布情况如下所示:(1)Audio的Java部分代码路径:frameworks/base/media/java/android/media与Audio相关的Java包是android.media,主要包含AudioManager和Audio系统的几(1)Audio的JNI部分代码路径:frameworks/base/core/jni生成库Iibandroid_runtime.so,Audio的JN
5、I是其中的一个部分。(2)Audio的框架部分头文件路径:frameworks/base/incIude/media/源代码路径:frameworks/base/media/1ibmedia/Audio本地框架是media库的一部分,本部分内容被编译成库Iibmedia.so,提供Audio部分的接口(包括基于Binder的IPC机制)。(3)AudioFlinger代码路径:frameworks/base/services/audiofIinger(注:android2.3)这部分内容被编译成库丨ibaudioflinger.so,它是Audio系统的本地服务部分。(4)Aud
6、io的硬件抽象层接口头文件路径:hardware/1ibhardware_Iegacy/incIude/hardware/Audio硬件抽象层的实现在各个系统中可能是不同的,需要使用代码去继承相应的类并实现它们,作为Android系统本地框架层和驱动程序接口。1.3Audio系统和上层接口在Android中,Audio系统自上而下由Java的Audio类、Audio本地框架类、AudioFIinger和Audio的硬件抽象层几个部分组成。1.3.1Audio系统的各个层次Audio本地框架类是丨ibmedia.so的一个部分,这些Audio接口对上层提供接口,由下层的本地代码去实
7、现。AudioFIinger继承Iibmeida中的接口,提供实现库丨ibaudiofiInger,so。这部分内容没有自己的对外头文件,上层调用的只是丨ibmedia本部分的接口,但实际调用的内容是IibaudiofIinger.soQAudio使用JNI和Java对上层提供接口,JNI部分通过调用Iibmedia库提供的接口来实现。Audio的硬件抽象层提供到硬件的接口,供AudioFlinger调用。Audio的硬件抽象层实际上是各个平台开发过程中需要主要关注和独立完成的部
此文档下载收益归作者所有