AudioPolicyService 是audio framework 的一大service, 另外一个是AudioFlinger。
一直觉得通过代码来分析的话写起来很费劲, 最近去看了下UML, 通过同UML 去分析感觉比较清晰,而我自己看回来的话也很容易就知道框架是怎样。
先看下AudioPolicyService 的各个主要类的关系。
这个看起来简单清晰多了。
有必要说一下代码中AudioPolicyClient, 它是AudioPolicyService 的子类,它是这么存在的。
void AudioPolicyService::onFirstRef()
{
......
mAudioPolicyClient = new AudioPolicyClient(this);
mAudioPolicyManager = createAudioPolicyManager(mAudioPolicyClient);
......
}
对象在AudioPolicyService::onFirstRef() 被创建, 并以指针的形式作为参数去创建AudioPolicyManager
extern "C" AudioPolicyInterface* createAudioPolicyManager(
AudioPolicyCl