오디오 구성 AAOS 플래그

Android Automotive OS(AAOS)는 플래그와 구성을 사용하여 동적 라우팅부터 더 일반적인 기능 플래그(예: 자동차 서비스의 볼륨 제어)에 이르기까지 다양한 기능을 사용 설정합니다. 오디오 관리에 관한 현재 AAOS 구성 플래그는 아래에 설명되어 있습니다.

플래그 목적
audioUseDynamicRouting 자동차 서비스 구성 파일에 정의되고 AAOS 라우팅을 사용 설정합니다. 구성은 true로 설정되어야 합니다. false이면 라우팅과 대부분의 CarAudioService가 사용 중지되고 OS는 오디오 정책 구성에 설명된 기본 동작으로 대체됩니다.
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에는 모든 오디오 컨텍스트가 다음 순서로 포함됩니다.

  • NAVIGATION
  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
  • CALL_RING
  • SYSTEM_SOUND
  • SAFETY
  • ALARM
  • NOTIFICATION
  • VEHICLE_STATUSEMERGENCY

버전 2는 다음 컨텍스트로 제한되며 순서는 다음과 같습니다.

기본 버전은 1입니다.

  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
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(기본값)로 설정하면 볼륨 키 이벤트가 포그라운드 앱에 전달될 수 있으며 자동차 오디오 서비스 외부의 볼륨 키 이벤트 관리로 인해 부정적인 결과가 발생할 수 있습니다.

자동차 오디오 서비스 구성

Android 13 전에는 자동차 서비스 구성을 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)를 지원합니다. 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.updatable로 설정된 targetPackage가 포함되어 있습니다.

자세한 내용은 다음 리소스를 참고하세요.

기능 지원 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