Atributos de audio

Los reproductores de audio admiten atributos que definen cómo el sistema de audio maneja las decisiones de enrutamiento, volumen y enfoque para la fuente especificada. Las aplicaciones pueden adjuntar atributos a una reproducción de audio (como música reproducida por un servicio de transmisión o una notificación de un nuevo correo electrónico) y luego pasar los atributos de la fuente de audio al marco, donde el sistema de audio usa los atributos para tomar decisiones de mezcla y notificar a las aplicaciones. sobre el estado del sistema.

En Android 4.4 y versiones anteriores, el marco tomaba decisiones de mezcla usando solo el tipo de transmisión de audio. Sin embargo, basar tales decisiones en el tipo de flujo era demasiado limitante para producir resultados de calidad en múltiples aplicaciones y dispositivos. Por ejemplo, en un dispositivo móvil, algunas aplicaciones (p. ej., Google Maps) reproducían instrucciones de manejo en el tipo de transmisión STREAM_MUSIC; sin embargo, en los dispositivos móviles en modo de proyección (es decir, Android Auto), las aplicaciones no pueden mezclar indicaciones de conducción con otros flujos multimedia.

Con la API de atributos de audio , las aplicaciones proporcionan al sistema de audio información detallada sobre una fuente de audio específica, incluido el uso (por qué se reproduce la fuente), el tipo de contenido (qué se reproduce la fuente), las banderas (cómo se debe reproducir la fuente), y contextos (nuevo en Android 9). Sintaxis:

AudioAttributes {
    mUsage
    mContentType
    mSource
    mFlags
    mTags / mFormattedTags / mBundle    (key value pairs)
}
  • uso Especifica por qué se reproduce la fuente y controla las decisiones de enrutamiento, enfoque y volumen.
  • tipo de contenido Especifica lo que está reproduciendo la fuente (música, película, discurso, sonificación, desconocido).
  • contexto Valores de uso abstraídos a la HAL de audio.
  • banderas Especifica cómo debe reproducirse la fuente. Incluye soporte para aplicación de audibilidad (se requieren sonidos de obturador de cámara en algunos países) y sincronización de audio/video de hardware.

Para el procesamiento dinámico, las aplicaciones deben distinguir entre películas, música y contenido de voz. La información sobre los datos en sí también puede ser importante, como el volumen y el valor máximo de la muestra.

Usando atributos

El uso especifica el contexto en el que se usa la secuencia, proporcionando información sobre por qué se reproduce el sonido y para qué se usa. La información de uso es más expresiva que un tipo de flujo y permite que las plataformas o las políticas de enrutamiento refinen las decisiones de volumen o enrutamiento.

Proporcione uno de los siguientes valores de uso para cualquier instancia:

  • USO_DESCONOCIDO
  • USO_MEDIA
  • USO_VOZ_COMUNICACIÓN
  • USO_VOICE_COMMUNICATION_SIGNALLING
  • USO_ALARMA
  • USO_NOTIFICACIÓN
  • USO_NOTIFICACIÓN_TELEFONÍA_TONO DE LLAMADA
  • USO_NOTIFICACIÓN_COMMUNICACIÓN_SOLICITUD
  • USO_NOTIFICACIÓN_COMMUNICACIÓN_INSTANTÁNEA
  • USO_NOTIFICACIÓN_COMMUNICACIÓN_DEMORADA
  • USO_NOTIFICACIÓN_EVENTO
  • USO_ASISTENCIA_ACCESIBILIDAD
  • USO_ASISTENCIA_NAVEGACIÓN_GUIDANCE
  • USO_ASISTENCIA_SONIFICACIÓN
  • USO_JUEGO
  • USO_VIRTUAL_FUENTE
  • USO_ASISTENTE

Los valores de uso de atributos de audio son mutuamente excluyentes. Para ver ejemplos, consulte las definiciones USAGE_MEDIA y USAGE_ALARM ; para conocer las excepciones, consulte la definición de AudioAttributes.Builder .

Tipo de contenido

El tipo de contenido define cuál es el sonido y expresa la categoría general del contenido, como película, voz o pitido/tono de llamada. El marco de audio utiliza información de tipo de contenido para configurar selectivamente bloques de posprocesamiento de audio. Si bien proporcionar el tipo de contenido es opcional, debe incluir información de tipo siempre que se conozca el tipo de contenido, como usar CONTENT_TYPE_MOVIE para un servicio de transmisión de películas o CONTENT_TYPE_MUSIC para una aplicación de reproducción de música.

Proporcione uno de los siguientes valores de tipo de contenido para cualquier instancia:

  • CONTENT_TYPE_UNKNOWN (predeterminado)
  • CONTENT_TYPE_MOVIE
  • CONTENT_TYPE_MUSIC
  • CONTENT_TYPE_SONIFICATION
  • CONTENT_TYPE_SPEECH

Los valores de tipo de contenido de atributo de audio son mutuamente excluyentes. Para obtener detalles sobre los tipos de contenido, consulte la API de atributos de audio .

Contextos

Cada sonido en Android está identificado por la aplicación responsable y el motivo por el que se genera el sonido; y el dispositivo Android usa esta información para determinar cómo presentar el sonido. En Android 8.x y versiones anteriores, las aplicaciones pueden informar el motivo de la generación de sonido mediante tipos de transmisión heredados (p. ej., AudioSystem.STREAM_MUSIC ) o AudioAttributes . En Android 9, los valores de AudioAttributes.usage se abstraen en el nivel HAL como Contexts .

Contextos de audio HAL Uso de atributos de audio
MÚSICA MEDIOS DE COMUNICACIÓN
COMANDO DE VOZ USO_ASISTENTE
NAVEGACIÓN ASISTENCIA_NAVEGACIÓN_GUIADO
LLAMAR COMUNICACIÓN DE VOZ
TONO DE LLAMADA TONO DE NOTIFICACIÓN
NOTIFICACIÓN NOTIFICACIÓN
ALARMA ALARMA
SISTEMA_SONIDO ASISTENCIA_SONIFICACION
DESCONOCIDO DESCONOCIDO

Puede proporcionar uno de los siguientes valores de CONTEXT_NUMBER para cualquier instancia:

  • MUSIC_CONTEXT // Reproducción de música
  • NAVIGATION_CONTEXT // Direcciones de navegación
  • VOICE_COMMAND_CONTEXT // Sesión de comando de voz
  • CALL_RING_CONTEXT // Timbre de llamada de voz
  • CALL_CONTEXT // Llamada de voz
  • ALARM_CONTEXT // Sonido de alarma de Android
  • NOTIFICATION_CONTEXT // Notificaciones
  • SYSTEM_SOUND_CONTEXT // Sonidos de interacción del usuario (clics de botones, etc.)

banderas

Los indicadores especifican cómo el marco de audio aplica efectos a la reproducción de audio. Proporcione uno o más de los siguientes indicadores para una instancia:

  • FLAG_AUDIBILITY_ENFORCED . Solicita al sistema que asegure la audibilidad del sonido. Úselo para abordar las necesidades del STREAM_SYSTEM_ENFORCED heredado (como forzar los sonidos del obturador de la cámara).
  • HW_AV_SYNC . Solicita al sistema que seleccione un flujo de salida que admita sincronización A/V de hardware.

Los indicadores de atributos de audio no son exclusivos y se pueden combinar. Para obtener detalles sobre estos indicadores, consulte la API de atributos de audio .

Ejemplo

En este ejemplo, AudioAttributes.Builder define los AudioAttributes que utilizará una nueva instancia de AudioTrack :

AudioTrack myTrack = new AudioTrack(
  new AudioAttributes.Builder()
 .setUsage(AudioAttributes.USAGE_MEDIA)
    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
    .build(),
  myFormat, myBuffSize, AudioTrack.MODE_STREAM, mySession);

Compatibilidad

Los desarrolladores de aplicaciones deben usar atributos de audio al crear o actualizar aplicaciones para Android 5.0 y versiones posteriores. Sin embargo, no se requiere que las aplicaciones aprovechen los atributos; pueden manejar solo tipos de transmisión heredados o no conocer los atributos (es decir, un reproductor multimedia genérico que no sabe nada sobre el contenido que está reproduciendo).

En tales casos, el marco mantiene la compatibilidad con versiones anteriores de dispositivos y versiones de Android mediante la traducción automática de tipos de transmisión de audio heredados a atributos de audio. Sin embargo, el marco no aplica ni garantiza esta asignación entre dispositivos, fabricantes o versiones de Android.

Asignaciones de compatibilidad:

Android 5.0 y superior Android 4.4 y anteriores
CONTENT_TYPE_SPEECH
USAGE_VOICE_COMMUNICATION
STREAM_VOICE_CALL
CONTENT_TYPE_SONIFICATION
USAGE_ASSISTANCE_SONIFICATION
STREAM_SYSTEM
CONTENT_TYPE_SONIFICATION
USAGE_NOTIFICATION_RINGTONE
STREAM_RING
CONTENT_TYPE_MUSIC
USAGE_UNKNOWN
USAGE_MEDIA
USAGE_GAME
USAGE_ASSISTANCE_ACCESSIBILITY
USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
STREAM_MUSIC
CONTENT_TYPE_SONIFICATION
USAGE_ALARM
STREAM_ALARM
CONTENT_TYPE_SONIFICATION
USAGE_NOTIFICATION
USAGE_NOTIFICATION_COMMUNICATION_REQUEST
USAGE_NOTIFICATION_COMMUNICATION_INSTANT
USAGE_NOTIFICATION_COMMUNICATION_DELAYED
USAGE_NOTIFICATION_EVENT
STREAM_NOTIFICATION
CONTENT_TYPE_SPEECH (@hide) STREAM_BLUETOOTH_SCO
FLAG_AUDIBILITY_ENFORCED (@hide) STREAM_SYSTEM_ENFORCED
CONTENT_TYPE_SONIFICATION
USAGE_VOICE_COMMUNICATION_SIGNALLING
(@hide) STREAM_DTMF

Tipos de transmisión en desuso

Android 9 desaprueba los siguientes tipos de transmisión para uso automotriz:

  • STREAM_DEFAULT
  • STREAM_VOICE_CALL
  • STREAM_SYSTEM
  • STREAM_RING
  • STREAM_MUSIC
  • STREAM_ALARM
  • STREAM_NOTIFICACIÓN
  • STREAM_BLUETOOTH_SCO
  • STREAM_SYSTEM_ENFORCED
  • CORRIENTE_DTMF
  • STREAM_TTS
  • STREAM_ACCESIBILIDAD

Para obtener más detalles, consulte Audio automotriz .