Android源码分析--Audio设备文件加载(06)

        手机上有多少设备都是通过配置xml文件来实现的,然后在构造AudioPolicyManager实例时进行文件解析,初始化相关的变量。比如有些手机有两个麦克风,通常叫做内置麦克风,和副麦克风,但是有些低端手机只会配置内置的麦克风。

        通过全局搜索可以看到

/device/google/dragon/device.mk:USE_XML_AUDIO_POLICY_CONF := 1

在源码的device.mk中有USE_XML_AUDIO_POLICY_CONF的定义,device.mk应该是手机上所有硬件的配置目录,芯片开发商可以根据自己产品的需要另外配置相关的产品。

以下/device/google/dragon/项目为基础进行分析,这样不会涉及到公司的代码,这个目录应该是标准的配置目录,其它芯片厂商可以修改配置文件进行自己项目的配置。需要掌握Android的编译原理,后面会有专门的章节进行介绍。

        目前只重点关注这两句话

PRODUCT_COPY_FILES += \
    frameworks/av/services/audiopolicy/config/default_volume_tables.xml:system/etc/default_volume_tables.xml \
    $(LOCAL_PATH)/audio_policy_configuration.xml:system/etc/audio_policy_configuration.xml
LOCAL_PATH := $(call my-dir)
上面这个Android.mk编译语句表示返回当前被调用的文件路径。PRODUCT_COPY_FILES的意思是将前面的文件复制到后面的文件中,最后编译打包/system/etc/default_volume_tables.xml和/system/etc/audio_policy_configuration.xml会放到手机的/system/etc/目录中,可以通过adb shell进行查看。

这两个文件在AudioPolicyManager中已经指定文件目录

#define AUDIO_POLICY_XML_CONFIG_FILE_PATH_MAX_LENGTH 128
#define AUDIO_POLICY_XML_CONFIG_FILE_NAME "audio_policy_configuration.xml"
接下来通过这两个文件来分析解析过程,配置不同可能解析的文件的路径不相同,文件的内容也会不相同,但是原理是相同的。

查看if分支

IVolumeCurvesCollection *mVolumeCurves; // Volume Curves per use case and device category

    mVolumeCurves = new VolumeCurvesCollection();
    AudioPolicyConfig config(mHwModules, mAvailableOutputDevices, mAvailableInputDevices,
                             mDefaultOutputDevice, speakerDrcEnabled,
                             static_cast<VolumeCurvesCollection *>(mVolumeCurves));
    if (deserializeAudioPolicyXmlConfig(config) != NO_ERROR) {
        ALOGE("could not load audio policy configuration file, setting defaults");
        config.setDefault();
    }
有对HwModules进行配置,有输入输出以及默认设备的配置,和音量曲线分布的配置。定义一个config变量,然后调用deserializeAudioPolicyXmlConfig函数进行初始化。

/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值