音频配置 AAOS 标志

Android Automotive OS (AAOS) 使用标志和配置来启用不同的功能,从动态路由开始,到更通用的功能标志,例如车载服务的音量控制。此处介绍了当前的 AAOS 音频管理配置标志。

标志 用途
audioUseDynamicRouting 在车载服务配置文件中定义,用于启用 AAOS 路由。配置必须设置为 true。当 false 时,路由和大部分 CarAudioService 会被停用,操作系统会回退到配置音频政策中所述的默认行为。
audioUseCarVolumeGroupMuting 在车载服务配置文件中定义,用于启用单个音量组的静音。当设置为 false(默认值)时,单个音量组的静音会被停用。相反,静音会切换主静音。当设置为 true 时,车载音量组静音会被启用,并且可以单独静音每个音量组。当 true 时,必须在 音频控制 HAL 中实现音量组静音。
audioUseHalDuckingSignals 在车载服务配置文件中定义,用于启用 IAudioControl#onDevicesToDuckChange API,以便在需要衰减时通知 HAL。当 true(默认值)时,API 会接收信号,指示要衰减哪些输出设备以及哪些用例持有焦点。当 false 时,不会调用该 API。除非 音频控制 HAL 实现了衰减,否则不会调用该 API。
config_oemCarService 在车载服务配置文件中定义,这是 OEM 自定义服务的组件名称。OEM 可以选择实现此服务,以针对不同的政策自定义车载服务操作。如果 OEM 选择实现此组件,他们必须实现一项服务来扩展 car-lib 公开的 OemCarService,然后实现所需的组件服务。对于车载音频服务,OEM 可以专门实现任何音频子服务来管理音频操作。如需了解详情,请参阅车载音频插件服务。如果组件名称无效,CarService 将不会连接到任何 OEM 服务。组件名称不能是第三方软件包。它必须是预安装的。
audioVolumeAdjustmentContextsVersion

在车载服务配置文件中定义,此配置用于选择音量调整上下文优先级列表的版本。

版本 1 包含所有音频上下文,按以下顺序排列

  • 导航
  • 通话
  • 音乐
  • 公告
  • 语音指令
  • 来电铃声
  • 系统声音
  • 安全
  • 闹钟
  • 通知
  • 车辆状态紧急情况

版本 2 仅限于以下上下文,按以下顺序排列。

默认版本为 1

  • 通话
  • 音乐
  • 公告
  • 语音指令
audioPersistMasterMuteState 在车载服务配置文件中定义,此配置用于持久保存全局静音状态。当 true(默认值)时,Android 会在启动时恢复全局静音状态。当 audioUseCarVolumeGroupMutingtrue 时,这不会影响持久保存静音更改,因为静音更改基于单个音量组。默认值设置为 true,当不应为设备持久保存主静音时,必须覆盖该值。
audioVolumeKeyEventTimeoutMs

在车载服务配置文件中定义,此配置用于指示超时时间(以毫秒为单位),在此期间,在音量键事件期间,车载音量组被视为音量控制更改的活动状态。此配置的使用方式如下:

  • 超时时间用于确定在播放停止后,是否仍可将播放(与播放的音频用例关联的音频音量)视为自动音量选择。
  • 超时时间也用作自动音量调整之间所需的暂停时长,以更改用户正在调整的内容。

默认值为 3000 毫秒,OEM 应调整此值以定制用户体验。

audioUseCarVolumeGroupEvent 在车载服务配置文件中定义,此配置用于启用音量组的回调事件。当 true 时,客户端通过 ICarVolumeGroupEvent 接收对影响音量组的事件的回调。启用后:

  • 我们强烈建议供应商也支持 IAudioControl#setModuleChangeCallbackIAudioControl#registerGainCallback,以获取音频硬件的事件和更改。
  • 当同一个应用注册了 CarVolumeCallbackCarVolumeGroupEventCallback 时,音量组索引和音量组静音回调应仅通过 CarVolumeGroupEventCallback 进行因此,我们强烈建议所有应用迁移到新的回调接口,以确保一致的性能。
  • 默认值为 false。我们建议您将其设置为 true,因为支持旧版音量回调的 API 已被弃用,并且很快将完全移除。

config_useFixedVolume frameworks/base/core/res/res/values/config.xml 中定义。必须设置为 true,以允许车载音频服务管理音量控制。当未设置 config_useFixedVolume 标志或将其设置为 false(默认值)时,应用可以调用 AudioManager 音量管理 API,并通过软件混音器按流类型更改音量。这可能是不希望看到的,因为它可能会影响其他应用,并且软件混音器中的音量衰减可能会导致硬件放大器接收到的信号中可用的有效位减少。尚未配置且设置为 true 的新设备通过 AudioManager 音量和静音 API 接收音量更改。
config_handleVolumeKeysInWindowManager frameworks/base/core/res/res/values/config.xml 中定义,必须设置为 true,以允许车载音频服务拦截音量键事件。如果设置为 false(默认值),则音量键事件可以转发到前台应用,并且可能会导致车载音频服务外部的音量键事件管理产生不利结果。
audioUseMinMaxActivationVolume 在车载服务配置文件中定义,用于启用最小和最大激活音量。当 true 时,可以由于最小和最大激活音量管理而调整音量增益索引。当 false(默认值)时,最小和最大激活音量不起作用。

车载音频服务配置

在 Android 13 之前,车载服务配置会被产品配置叠加层覆盖(如需了解详情,请参阅使用资源叠加自定义 build),适用于 packages/services/Car/service/res/values/config.xml 文件。

PRODUCT_PACKAGE_OVERLAYS := <path_to_overlay>

<path_to_overlay> 到实际位置的配置文件位置应包括 packages/services/Car/service/res/values/

车载服务 RRO

自 Android 13 起,AAOS 支持运行时资源叠加。使用 RRO 更改车载音频配置的值。例如,请参阅 device/google/cuttlefish/shared/auto/rro_overlay/ 中汽车 cuttlefish 参考的 RRO。audioUseDynamicRouting 配置在 device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/values/config.xml 中被覆盖。

<resources>
    <bool name="audioUseDynamicRouting">true</bool>
...

资源叠加层映射包含在 device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/xml/overlays.xml

<overlay>
...
  <item target="bool/audioUseDynamicRouting"
value="@bool/audioUseDynamicRouting" />
...
</overlay>

device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/AndroidManifest.xml 中定义的资源叠加层清单包含设置为 com.android.car.updatabletargetPackage

请参阅以下资源以了解更多信息

启用功能的 API

如果设备上启用了该功能,则该方法返回 true,否则返回 false。在 CarAudioManager#isAudioFeatureEnabled API 中,传入的参数必须是以下项之一:

  • AUDIO_FEATURE_DYNAMIC_ROUTING
  • AUDIO_FEATURE_VOLUME_GROUP_MUTING
  • AUDIO_FEATURE_OEM_AUDIO_SERVICE
  • AUDIO_FEATURE_VOLUME_GROUP_EVENTS
  • AUDIO_FEATURE_AUDIO_MIRRORING