Android Audio System 之三: AudioPolicyService 和 AudioPolicyManager(转)
http://www.cnblogs.com/yangjies145/p/6436209.html
Android AudioPolicyService服务启动过程
http://www.thinksaas.cn/topics/0/750/750089.html
Android 7.0 Audio: AudioFlinger介绍和初始
http://blog.csdn.net/xiashaohua/article/details/53818568
audioflinger : AudioHwDevice(HAL层对象)
OnFirstRef{
// start tone playback thread //用于tone音播放
mTonePlaybackThread = new AudioCommandThread(String8("ApmTone"), this);
// start audio commands thread //路由切换、音量调节
mAudioCommandThread = new AudioCommandThread(String8("ApmAudio"), this);
// start output activity command thread
mOutputCommandThread = new AudioCommandThread(String8("ApmOutput"), this);
mAudioPolicyClient = new AudioPolicyClient(this);//AudioPolicyClientImpl
mAudioPolicyManager = createAudioPolicyManager(mAudioPolicyClient);
}
frameworks/av/services/audiopolicy/manager/AudioPolicyFactory.cpp:21:extern "C" AudioPolicyInterface* createAudioPolicyManager(
hardware/xxx/audio/policy_hal/AudioPolicyManager.cpp:138:extern "C" AudioPolicyInterface* createAudioPolicyManager(
AudioPolicyFactory.cpp
extern "C" AudioPolicyInterface* createAudioPolicyManager(
AudioPolicyClientInterface *clientInterface)
{
return new AudioPolicyManager(clientInterface);//原生的HAL对象
}
hardware/xxx/audio/policy_hal/ AudioPolicyManager.cpp
// ----------------------------------------------------------------------------
// AudioPolicyInterface implementation
// ----------------------------------------------------------------------------
extern "C" AudioPolicyInterface* createAudioPolicyManager(
AudioPolicyClientInterface *clientInterface)
{
return new Audio