Android音频子系统分析-car_audio_configuration.xml

先附上一个例子,再逐一解释。

<!--
  Defines the audio configuration in a car, including
    - Audio zones
    - Context to audio bus mappings
    - Volume groups
  in the car environment.
-->
<carAudioConfiguration version="2">
    <zones>
        <zone name="primary zone" isPrimary="true" occupantZoneId="0">
            <volumeGroups>
                <group>
                    <device address="bus0_media_out">
                        <context context="music"/>
                    </device>
                    <device address="bus3_call_ring_out">
                        <context context="call_ring"/>
                    </device>
                    <device address="bus6_notification_out">
                        <context context="notification"/>
                    </device>
                    <device address="bus7_system_sound_out">
                        <context context="system_sound"/>
                        <context context="emergency"/>
                        <context context="safety"/>
                        <context context="vehicle_status"/>
                        <context context="announcement"/>
                    </device>
                </group>
                <group>
                    <device address="bus1_navigation_out">
                        <context context="navigation"/>
                    </device>
                    <device address="bus2_voice_command_out">
                        <context context="voice_command"/>
                    </device>
                </group>
                <group>
                    <device address="bus4_call_out">
                        <context context="call"/>
                    </device>
                </group>
                <group>
                    <device address="bus5_alarm_out">
                        <context context="alarm"/>
                    </device>
                </group>
            </volumeGroups>
        </zone>
        <zone name="rear seat zone 1" audioZoneId="1">
            <volumeGroups>
                <group>
                    <device address="bus100_audio_zone_1">
                        <context context="music"/>
                        <context context="navigation"/>
                        <context context="voice_command"/>
                        <context context="call_ring"/>
                        <context context="call"/>
                        <context context="alarm"/>
                        <context context="notification"/>
                        <context context="system_sound"/>
                        <context context="emergency"/>
                        <context context="safety"/>
                        <context context="vehicle_status"/>
                        <context context="announcement"/>
                    </device>
                </group>
            </volumeGroups>
        </zone>
        <zone name="rear seat zone 2"  audioZoneId="2">
            <volumeGroups>
                <group>
                    <device address="bus200_audio_zone_2">
                        <context context="music"/>
                        <context context="navigation"/>
                        <context context="voice_command"/>
                        <context context="call_ring"/>
                        <context context="call"/>
                        <context context="alarm"/>
                        <context context="notification"/>
                        <context context="system_sound"/>
                        <context context="emergency"/>
                        <context context="safety"/>
                        <context context="vehicle_status"/>
                        <context context="announcement"/>
                    </device>
                </group>
            </volumeGroups>
        </zone>
    </zones>
</carAudioConfiguration>

概括来说,该文件描述了车里有哪些区域,每个区域划分了多少组,每个组包含了哪些设备,每个设备接收哪些类型的音频流。

zone:

表示一个区域,例如主驾、副驾、前排、后排、左测、右测或者车整体等都可以叫做一个区域。默认情况下,所有音频将路由到主可用区。如需更新应用以路由到其他可用区,可使用 CarAudioManager.setZoneIdForUid。

group:

表示一个volume group,该组内的音频流类型可以独立进行音量控制。例如:将后排作为一个zone,后排左侧的娱乐显示屏的警告音量和媒体音量,可以有不同的音量调节。这里配置了多少个group,系统设置中Sound选项就会有多少个音量调节滑动Bar。

device:

每一个实体输出设备,可以喇叭,可以是耳机孔。里面的每个设备都需要在audio_policy_configuration.xml中声明,对应devicePort。车上由于设备繁多,不像手机和TV,不同的输出设备都有与之对应的名称,所以统一使用AUDIO_OUT_DEVICE_BUS来描述,通过address来区分,也就有了bus0_media_out, bus1_navigation_out等名称。

context:

音频上下文,在创建播放器构建AudioAttributes时指定。对应不同的使用场景,如打电话,导航,铃声等,用于指示此设备接收哪些场景下的输出。

目前总共有12种上下文,每个zone都应该将12种上下文配置齐全,以找到正确的路由。

CarAudioContext关联的 AttributeUsages
音乐UNKNOWN
GAME
MEDIA
NAVIGATIONASSISTANCE_NAVIGATION_GUIDANCE
VOICE_COMMANDASSISTANT
ASSISTANCE_ACCESSIBILITY
CALL_RINGNOTIFICATION_RINGTONE
CALLVOICE_COMMUNICATION
VOICE_COMMUNICATION_SIGNALING
ALARMALARM
NOTIFICATIONNOTIFICATION
NOTIFICATION_*
SYSTEM_SOUNDASSISTANCE_SONIFICATION
紧急EMERGENCY
安全性SAFETY
VEHICLE_STATUSVEHICLE_STATUS
公告ANNOUNCEMENT

车载音频  |  Android Open Source Project

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值