前言
由于这一阵子一直在做Android Audio相关的东西,了解了很多东西却感觉很乱,所以有必要总结一下。
正文
这次详细的记录一下MediaPlayer的工作流程吧,与Audio相关的模块一般有以下几种:播放音乐、录音、电话。
首先看一下Android的系统结构图吧,然后根据结构图来对Audio相关的东西进行分层分析。
Android Audio Archeticture
1. 与Audio相关的文件目录
Applications:Music、SoundRecorder、Phone and Setting -> packages/apps
Framework: frameworks/base/media/java/android/media -> Audio相关的framework
JNI:frameworks/base/media/jni -> Audio相关的jni部分
Libraries: frameworks/base/media/libmedia
frameworks/base/media/libmediaplayerservice -> MediaPlayer service
frameworks/base/services/audioflinger -> Audioflinger服务相关的文件
frameworks/base/media/libstagefright -> 这是与stagefright相关的,主要在Audio中用于codec
2. 与Audio相关的几个服务
1)AudioFlinger Servie
2)MediaPlayerService
3)AudioPolicyService
在系统起来的时候,就会去启动这三个与Audio相关的系统服务。关于这三个服务网上已经有人做了很全面的分析了(只不过还是基于2.3系统的,4.0的audio相关目录都已经变了),可以转向以下链接: http://blog.csdn.net/droidphone/article/details/5951999 -> AudioFlinger http://blog.csdn.net/DroidPhone/article/details/5949280 -> AudioPolicyService 和 AudioPolicyManager
3.Music播放的流程
![](http://hi.csdn.net/attachment/201201/5/0_1325773393sEvt.gif)
5. 参考
源码分析
http://blog.csdn.net/DroidPhone/archive/2010/10/14/5941344.aspx
http://blog.csdn.net/DroidPhone/archive/2010/10/19/5951999.aspx
http://blog.csdn.net/DroidPhone/archive/2010/10/18/5949280.aspx
应用层
http://blog.csdn.net/hellogv/archive/2010/11/22/6026455.aspx
http://4225953-163-com.javaeye.com/blog/663694
音频系统架构
http://www.kandroid.org/android_pdk/audio_sub_system.html
http://blog.csdn.net/maxleng/archive/2010/05/14/5593759.aspx
http://www.360doc.com/content/10/0421/22/155970_24257702.shtml
音量调节
http://forest606.blog.163.com/blog/static/134450089201001922840481/