前言

由于这一阵子一直在做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播放的流程

自己画了个流程图,纯粹为了让自己更好的明白这个流程。(只画到了创建AudioTrack)

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/Innost/archive/2011/01/09/6125779.aspx

http://blog.csdn.net/Innost/archive/2011/01/15/6142812.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/

http://quanminchaoren.javaeye.com/blog/937050


更多相关文章

  1. android View 绘制流程 和 事件传递
  2. Android(安卓)模拟系统事件(三)
  3. 系统角度解读Android(安卓)P新特性
  4. Android中Service与Thread的区别
  5. 手机Android系统有那些优势?
  6. Android(安卓)7.0 ActivityManagerService(5) 广播(Broadcast)相
  7. android生命周期(详细总结)
  8. Android(安卓)Log系统介绍 (基于Android(安卓)N)
  9. [转】:Android生命周期

随机推荐

  1. php artisan命令信息列举
  2. 绘画到底怎么入门?零基础绘画入门技巧!
  3. php的Snoopy类案例讲解
  4. 意派Epub360丨如何做好金三银四招聘H5?来
  5. TP6 MVC 基础、中间键
  6. 初学者怎么画Q版人物?q版漫画人物绘画学习
  7. 意派Epub360丨火力全开!趣味H5助力HR玩转
  8. 数据库语句的拼凑查询
  9. PHP变量和数组遍历以及初始函数
  10. 给R语言RStudio添加阿里云镜像源