Android系统中,对音频设备进行管理的,主要为Audio Flinger与Audio Policy Service。从职能分布上来讲,AudioPolicyService是策略的制定者,比如什么时候打开音频接口设备、某种Stream类型的音频对应什么设备等等。而AudioFlinger则是策略的执行者,例如具体如何与音频设备通信,如何维护现有系统中的音频设备,以及多个音频流的混音如何处理等等都得由它来完成。
上述两样东西,就不讲了,我也没看,对于蓝牙A2DP需要知道的是,Audio Flinger是如何加载A2DP模块了。
首先看一下,蓝牙A2DP模块的定义:
1461 __attribute__ ((visibility ("default")))
1462 struct audio_module HAL_MODULE_INFO_SYM = {
1463 .common = {
1464 .tag = HARDWARE_MODULE_TAG,
1465 .version_major = 1,
1466 .version_minor = 0,
1467 .id = AUDIO_HARDWARE_MODULE_ID,
1468 .name = "A2DP Audio HW HAL",
1469 .author = "The Android Open Source Project",
1470