Audio Policy 分析

http://blog.csdn.net/hgl868/article/details/6888001

上回我们说了AudioFlinger(AF),总感觉代码里边有好多东西没说清楚,心里发毛。就看了看AF的流程,我们敢说自己深入了解了Android系统吗?AudioPolicyService(APS)是个什么东西?为什么要有它的存在?下层的Audio HAL层又是怎么结合到Android中来的?更有甚者,问个实在问题:插入耳机后,声音又怎么从最开始的外放变成从耳机输出了?调节音量的时候到底是调节Music的还是调节来电音量呢?这些东西,我们在AF的流程中统统都没讲到。但是这些他们又是至关重要的。从我个人理解来看,策略(Policy)比流程更复杂和难懂。

当然,遵循我们的传统分析习惯,得有一个切入点,否则我们都不知道从何入手了。

这里的切入点将是:

l         AF和APS系统第一次起来后,到底干了什么。

l         检测到耳机插入事件后,AF和APS的处理。

大家跟着我一步步来看,很快就发现,啊哈,APS也不是那么难嘛。

另外,这次代码分析的格式将参考《Linux内核情景分析》的样子,函数调用的解析将采用深度优先的办法,即先解释所调用的函数,然后再出来继续讲。

我曾经数度放弃分析APS,关键原因是我没找到切入点,只知道代码从头看到尾!

时间: 2024-09-30 09:29:39

Audio Policy 分析的相关文章

chromium audio 实现分析

转载请注明出处:http://blog.csdn.net/typename  powered by [email protected] 前言: 随着HTML5 标准完成制定,最近各种HTML5的猜测声音不断,在此不发表关于HTML5的未来意见,本文关注HTML5的新feature, audio标签.在HTML5中添加了新的标签,开发者可以直接使用audio标签嵌入音频,也可以直接使用video标签直接嵌入视频,其实这个标准在WHATWG早早已经被支持,只不过W3C最近才纳入标准.使用Androi

Android -- Audio Native服务之启动流程分析(一)

Android -- Audio Native服务之启动流程分析(一) Android中的Audio系统是比较庞大.繁杂的一部分内容, 其中会涉及较多的音频编解码.多媒体制式与Android Audio HAL设备管理的知识.随着Android的发展,其所支持的音频设备也变得越来丰富,如扬声器.耳机.听筒等等:这种变化也为Android管理如此丰富的音频设备以及如何正确.合理地切换音频输出提出了更高的要求.面对如此繁杂的管理要求,我们分析Android Audio服务的历程想必也不会轻松.接下来

[Android][Audio] audio_policy.conf文件分析

不同的Android产品在音频的设计上通常是存在差异的,而这些差异可以同过Audio的配置文件audio_policy.conf来获得.在Android系统中音频配置文件存放路径有两处,存放地址可以从AudioPolicyManagerBase.cpp文件中知道: #define AUDIO_POLICY_VENDOR_CONFIG_FILE "/vendor/etc/audio_policy.conf" #define AUDIO_POLICY_CONFIG_FILE "/

Android应用程序安装过程源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6766010 Android系统在启动的过程中,会启动一个应用程序管理服务PackageManagerService,这个服务 负责扫描系统中特定的目录,找到里面的应用程序文件,即以Apk为后缀的文件,然后对这些文件进解析,得到应用程序的相关信息,完成应用程序的安装过程, 本文将详细分析这个过程. 应用程序管理服务PackageManagerSe

Android systemserver分析ThrottleService 介绍

System Server是Android系统的核心,他在Dalvik虚拟机启动后立即开始初始化和运行.其它的系统服务在System Server进程的环境中运行./base/services/java/com/android/server/SystemServer.java Java代码   /** * This method is called from Zygote to initialize the system. This will cause the native * service

android audio开发的一些专用术语(待翻译)

Audio Terminology IN THIS DOCUMENT Generic Terms Digital Audio Hardware and Accessories Audio Signal Path Android-Specific Terms Sample Rate Conversion This document provides a glossary of audio-related terminology, including a list of widely used, g

关于android audio路由策略的修改

关于android audio路由策略的修改 在工作时,往往有这样一些需求:1)希望针对不同的audio stream type(例如music.tts), 有输出到不同的输出设备(例如speaker.headset.BT.usb audio等)的需求,另外还有输出设备的优先级的需求.例如AUX(headset) > BT > FMTX > speaker.即例如BT连接了,那么音频就输出到BT,而不是FM发射.2)针对不同的audio stream type和不同的输出设备,有不同的输

System进程的启动流程第二部分

继System进程的启动流程第一部分,我们接着分析com.android.server.SystemServer的main函数.如下: public class SystemServer { ...... native public static void init1(String[] args); ...... public static void main(String[] args) { ...... init1(args); ...... } public static final vo

Android AudioPolicyService服务启动过程

AudioPolicyService是策略的制定者,比如什么时候打开音频接口设备.某种Stream类型的音频对应什么设备等等.而AudioFlinger则是策略的执行者,例如具体如何与音频设备通信,如何维护现有系统中的音频设备,以及多个音频流的混音如何处理等等都得由它来完成.AudioPolicyService根据用户配置来指导AudioFlinger加载设备接口,起到路由功能. AudioPolicyService启动过程 AudioPolicyService服务运行在mediaserver进