Marcas de AAOS de configuración de audio

El SO Android Automotive (AAOS) usa marcas y configuraciones para habilitar diferentes funciones, desde el enrutamiento dinámico hasta marcas de funciones más genéricas, como el control de volumen desde el servicio del automóvil. Aquí se describen las marcas de configuración actuales de AAOS para la administración de audio.

Marca Propósito
audioUseDynamicRouting Se define en el archivo de configuración del servicio de automóvil para habilitar el enrutamiento de AAOS. La configuración debe establecerse en true. Cuando false, el enrutamiento y gran parte de CarAudioService están inhabilitados, el SO recurre al comportamiento predeterminado que se describe en Cómo configurar políticas de audio.
audioUseCarVolumeGroupMuting Se define en el archivo de configuración del servicio de automóviles para habilitar la silenciación de grupos de volumen individuales. Cuando se establece en false (el valor predeterminado), se inhabilita la silenciación de grupos de volumen individuales. En su lugar, el silenciamiento activa el silenciamiento principal. Cuando se establece en true, se habilita la silenciación del grupo de volumen del automóvil y se puede silenciar cada grupo de volumen de forma individual. Cuando true, se debe implementar la silenciación del grupo de volumen en el HAL de control de audio.
audioUseHalDuckingSignals Se define en el archivo de configuración del servicio de automóvil para permitir que la API de IAudioControl#onDevicesToDuckChange informe a HAL cuándo agacharse. Cuando es true (valor predeterminado), la API recibe indicadores que indican qué dispositivos de salida se deben ocultar y qué usos mantienen el enfoque. Cuando false, no se llama a la API. No se llama a la API, a menos que el HAL de control de audio implemente la atenuación.
config_oemCarService Se define en el archivo de configuración del servicio de automóviles y es el nombre del componente del servicio de personalización del OEM. Los OEMs pueden implementar este servicio para personalizar las acciones de servicio de automóviles para diferentes políticas. Si los OEMs optan por implementar este componente, deben implementar un servicio para extender el OemCarService que expone car-lib y, luego, implementar los servicios de componentes requeridos. En el caso específico del servicio de audio para automóviles, los OEMs pueden implementar cualquiera de los subservicios de audio para administrar la acción de audio. Para obtener más detalles, consulta Servicio de complementos de audio para automóviles. Si el nombre del componente no es válido, CarService no se conectará a ningún servicio de OEM. El nombre del componente no puede ser un paquete de terceros. Debe estar preinstalada.
audioVolumeAdjustmentContextsVersion

Se define en el archivo de configuración del servicio de automóvil, la configuración para seleccionar la versión de la lista de prioridades del contexto de ajuste de volumen.

La versión 1 incluye todos los contextos de audio, en este orden:

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

La versión 2 se limita a los siguientes contextos, en este orden.

La versión predeterminada es 1.

  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
audioPersistMasterMuteState Se define en el archivo de configuración del servicio de automóviles, la configuración para conservar el estado de silenciamiento global. Cuando true (el valor predeterminado), Android restablece el estado de silenciamiento global durante el inicio. Cuando audioUseCarVolumeGroupMuting es true, esto no tiene ningún impacto en los cambios de silenciamiento persistentes, ya que los cambios de silenciamiento se basan en grupos de volumen individuales. El valor predeterminado se establece en true y se debe reemplazar cuando no se debe conservar la silenciación principal para un dispositivo.
audioVolumeKeyEventTimeoutMs

Se define en el archivo de configuración del servicio de automóvil. Es la configuración para indicar el tiempo de espera en milisegundos mientras un grupo de volumen del automóvil se considera activo para los cambios de control de volumen durante los eventos de teclas de volumen. La configuración se usa de la siguiente manera:

  • El tiempo de espera se usa para determinar si una reproducción (volumen de audio asociado con el uso de audio de la reproducción) aún se puede considerar para la selección automática de volumen después de que se detenga la reproducción.
  • El tiempo de espera también se usa como la duración de la pausa necesaria entre los ajustes automáticos de volumen para cambiar lo que el usuario está ajustando.

El valor predeterminado es de 3000 milisegundos y los OEMs deben ajustarlo para adaptar la experiencia del usuario.

audioUseCarVolumeGroupEvent Se define en el archivo de configuración del servicio de automóvil, la configuración para habilitar eventos de devolución de llamada a grupos de volumen. Cuando true, los clientes reciben una devolución de llamada a través de ICarVolumeGroupEvent a los eventos que afectan a los grupos de volumen. Cuando la función está habilitada, ocurre lo siguiente:

  • Recomendamos que los proveedores también admitan IAudioControl#setModuleChangeCallback y IAudioControl#registerGainCallback para eventos y cambios en el hardware de audio.
  • Cuando la misma app registra CarVolumeCallback y CarVolumeGroupEventCallback, el índice del grupo de volumen y las devoluciones de llamada de silenciamiento del grupo de volumen deben pasar solo por CarVolumeGroupEventCallback. Por lo tanto, recomendamos que todas las apps migren a la nueva interfaz de devolución de llamada para garantizar un rendimiento coherente.
  • El valor predeterminado es false. Te recomendamos que lo configures en true porque las APIs para admitir devoluciones de llamada de volumen heredado dejarán de estar disponibles y pronto se quitarán por completo.

config_useFixedVolume Se define en frameworks/base/core/res/res/values/config.xml. Se debe establecer en true para permitir que el servicio de audio para automóviles administre el control de volumen. Cuando no se establece la marca config_useFixedVolume o se establece en false (el valor predeterminado), las apps pueden llamar a las APIs de administración de volumen AudioManager y cambiar el volumen por tipo de transmisión en el mezclador de software. Esto puede no ser deseable debido al efecto potencial en otras apps y al hecho de que la atenuación del volumen en el mezclador de software puede generar menos bits significativos disponibles en la señal cuando se recibe en el amplificador de hardware. Los dispositivos nuevos que no se configuraron y que están configurados en true reciben cambios de volumen a través de las APIs de volumen y silenciamiento de AudioManager.
config_handleVolumeKeysInWindowManager Se define en frameworks/base/core/res/res/values/config.xml y se debe establecer en true para permitir que el servicio de audio para automóviles intercepte los eventos de teclas de volumen. Si se establece en false (el valor predeterminado), los eventos de teclas de volumen se pueden reenviar a la app en primer plano y pueden generar resultados adversos de la administración de eventos de teclas de volumen fuera del servicio de audio del automóvil.

Parámetros de configuración del servicio de audio para automóviles

Antes de Android 13, las configuraciones de servicios para vehículos se reemplazaban con una superposición de configuración de productos (para obtener más información, consulta Cómo personalizar la compilación con superposiciones de recursos) para el archivo packages/services/Car/service/res/values/config.xml.

PRODUCT_PACKAGE_OVERLAYS := <path_to_overlay>

La ubicación del archivo de configuración de <path_to_overlay> a la ubicación real debe incluir packages/services/Car/service/res/values/.

RRO de servicios de automóviles

Desde Android 13, AAOS admite superposiciones de recursos en tiempo de ejecución. Usa un RRO para cambiar el valor de la configuración de audio del automóvil. Por ejemplo, consulta los RRO de la referencia cuttlefish de la industria automotriz en device/google/cuttlefish/shared/auto/rro_overlay/. La configuración de audioUseDynamicRouting se anula en device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/values/config.xml.

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

El mapa de superposición de recursos se encuentra en device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/xml/overlays.xml:

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

El manifiesto de superposición de recursos definido en device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/AndroidManifest.xml contiene el targetPackage establecido como com.android.car.updatable.

Consulta estos recursos para obtener más información:

API habilitada para funciones

El método muestra true si la función está habilitada en el dispositivo; de lo contrario, muestra false. En la API de CarAudioManager#isAudioFeatureEnabled, el parámetro que se pasa debe ser uno de los siguientes:

  • AUDIO_FEATURE_DYNAMIC_ROUTING
  • AUDIO_FEATURE_VOLUME_GROUP_MUTING
  • AUDIO_FEATURE_OEM_AUDIO_SERVICE
  • AUDIO_FEATURE_VOLUME_GROUP_EVENTS
  • AUDIO_FEATURE_AUDIO_MIRRORING