3. 车载音频路由核心概念:音频设备、音频策略、音频区域、音频上下文
在 AAOS 系统中,音频路由并非简单的“播放→输出”直连,而是由四个核心概念共同构成的策略驱动型框架。理解 音频设备 (Device)、音频策略 (AudioPolicy)、音频区域 (AudioZone) 和 音频上下文 (AudioContext) 之间的关系,是掌握车载音频路由设计的基石。
核心认知: 这四个概念分别回答了“从哪出”、“怎么走”、“在哪用”、“干什么用”四个关键问题。它们共同构成了 AAOS 音频路由的决策闭环。
3.1 音频设备 (Audio Device)
音频设备是音频数据流的物理或逻辑端点。在车载环境中,设备不仅包括扬声器和麦克风,还涵盖了蓝牙 SCO、A2DP 等逻辑通道。
| 设备类型 | AAOS 标识 | 典型用途 | 路由方向 |
|---|---|---|---|
| 内置扬声器 | DEVICE_OUT_SPEAKER |
媒体播放、系统提示音 | 输出 (Output) |
| 蓝牙 A2DP 扬声器 | DEVICE_OUT_BLUETOOTH_A2DP |
无线音乐播放 | 输出 (Output) |
| 蓝牙 SCO | DEVICE_OUT_BLUETOOTH_SCO |
蓝牙电话通话音频 | 输出 (Output) |
| 车载麦克风 | DEVICE_IN_BUILTIN_MIC |
语音识别、车内通话拾音 | 输入 (Input) |
| 蓝牙 SCO 麦克风 | DEVICE_IN_BLUETOOTH_SCO_HEADSET |
蓝牙电话上行语音 | 输入 (Input) |
关键点: 在车载场景下,一个物理扬声器可能对应多个逻辑设备(如媒体设备、导航设备),通过 AudioPolicy 进行混音和路由控制。
3.2 音频策略 (AudioPolicy)
音频策略是 AAOS 音频路由的“交通规则”。它定义了当多个音频流同时存在时,系统如何决定哪个音频流被听到、哪个被衰减或静音。策略的核心是 优先级 和 焦点 (AudioFocus) 管理。
- 固定优先级策略: 导航 > 电话 > 媒体 > 系统音。高优先级音频可以“闪避” (Ducking) 低优先级音频。
- 动态策略: 基于音频上下文(如车辆行驶状态、用户交互)动态调整路由目标。
- 混音策略: 允许特定音频流(如导航提示音)与媒体流同时播放,仅降低媒体音量。
// AudioPolicy 配置片段 (audio_policy_configuration.xml)
<audioPolicyConfiguration version="1.0">
<globalConfiguration speaker_drc_enabled="true"/>
<modules>
<module name="primary" halVersion="3.0">
<attachedDevices>
<item>DEVICE_OUT_SPEAKER</item>
<item>DEVICE_OUT_BLUETOOTH_A2DP</item>
</attachedDevices>
<defaultOutputDevice>DEVICE_OUT_SPEAKER</defaultOutputDevice>
<mixPorts>
<mixPort name="primary output" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
</mixPorts>
<routes>
<route type="mix" sink="primary output"
sources="DEVICE_OUT_SPEAKER,DEVICE_OUT_BLUETOOTH_A2DP"/>
</routes>
</module>
</modules>
</audioPolicyConfiguration>
3.3 音频区域 (AudioZone)
音频区域是 AAOS 针对多座舱场景引入的核心抽象。它将车辆座舱划分为独立的音频空间,每个区域拥有独立的音频路由策略和设备列表。例如:前排播放媒体,后排观看视频,互不干扰。
| 区域 ID | 物理位置 | 关联设备 | 典型用途 |
|---|---|---|---|
| Zone 0 | 全车 | 所有扬声器 | 紧急广播、全车通话 |
| Zone 1 | 前排 | 左前、右前扬声器 | 驾驶员导航、媒体 |
| Zone 2 | 后排 | 左后、右后扬声器 | 后排娱乐系统 |
| Zone 3 | 副驾 | 右前扬声器 + 耳机 | 副驾独立媒体 |
注意: 音频区域的划分必须与硬件拓扑匹配。如果硬件仅支持一路 I2S 输出,则无法实现真正的独立区域路由,只能通过软件混音实现“伪区域”。
3.4 音频上下文 (AudioContext)
音频上下文是 AAOS 8.0+ 引入的元数据标签,用于描述音频流的使用场景。它比传统的 AudioAttributes 更精细,能够携带车辆状态信息,帮助 AudioPolicy 做出更智能的路由决策。
- 系统上下文: 如
AUDIO_CONTEXT_SYSTEM_SOUND(按键音、警告音)。 - 媒体上下文: 如
AUDIO_CONTEXT_MUSIC、AUDIO_CONTEXT_PODCAST。 - 通信上下文: 如
AUDIO_CONTEXT_VOICE_COMMUNICATION(蓝牙电话)、AUDIO_CONTEXT_VOICE_RECOGNITION。 - 导航上下文: 如
AUDIO_CONTEXT_NAVIGATION。 - 车辆上下文: 如
AUDIO_CONTEXT_VEHICLE_ALERT(ADAS 警告、倒车雷达)。
实践价值: 通过音频上下文,系统可以区分“导航语音”和“媒体音乐”,即使两者使用相同的 AudioAttributes,也能实现不同的闪避策略。例如:导航播报时,媒体音量降低 50%,而电话来电时,媒体完全静音。
3.5 四者关系:路由决策流程
下图展示了音频路由从请求产生到最终输出的完整决策链路,清晰呈现了四个核心概念的协作关系。
3.6 概念对比与总结
| 概念 | 核心职责 | 配置位置 | 典型问题 |
|---|---|---|---|
| 音频设备 | 定义物理/逻辑端点 | audio_policy_configuration.xml |
设备未枚举、路由不可达 |
| 音频策略 | 定义路由规则与优先级 | AudioPolicy 实现类 |
闪避不生效、焦点冲突 |
| 音频区域 | 划分独立音频空间 | car_audio_configuration.xml |
区域间串扰、设备归属错误 |
| 音频上下文 | 携带场景元数据 | 应用层 AudioAttributes |
上下文标签缺失、策略无法匹配 |
总结: 在 AAOS 车载音频架构中,音频上下文 是输入信号,音频策略 是决策引擎,音频区域 是空间隔离层,音频设备 是最终执行单元。四者缺一不可,共同构建了灵活、可扩展的车载音频路由体系。