理解 Audio 音频系统二 之 audioserver & AudioPolicyService - 代码先锋网
Android 音频源码分析——audioserver启动_奋斗的菜鸟ing-CSDN博客_android audioserver 启动
audioserver作为独立进程启动audioflinger的流程同上相差不大,主要区别是之前的audioflinger在mediaserver启动,而作为独立进程后,audioserver作为单独的init模块运行。
系统启动时将执行 /system/etc/init/audioserver.rc,audioserver由同目录下main_audioserver编译生成,具体参加如下代码http://androidxref.com/8.1.0_r33/xref/frameworks/av/media/audioserver/
我们也都知道了,audioflinger启动会调用构造函数和AudioFlinger的onFirstRef()函数。
开机启动audioserver,audioserver启动audioflinger,audioflinger构造函数通过mDevicesFactoryHal = DevicesFactoryHalInterface::create();调用libaudiohal的create函数,并创建DevicesFactoryHalLocal对象。
然而我们发现在这里,并没有加载HAL层so。没关系,我们知道加载hal层so是通过loadHwModule_l的openDevice函数,而loadHwModule_l也被loadHwModule调用,我们继续跟踪可以发现,loadHwModule被audiopolicymanager调用了。
从之前我们了解到audioserver启动时,不仅启动了audioflinger,也启动了audiopolicyservice。接下来我们看下audiopolicyservice的启动流程,会发现audiopolicyservice调用了audiopolicymanager,而audiopolicymanager构造函数则调用了loadHwModule。