Atributos de audio

Los reproductores de audio admiten atributos que definen el tratamiento que hace del sistema de audio de enrutamiento, volumen y enfoque para la fuente especificada. Aplicaciones pueden adjuntar atributos a una reproducción de audio (como la música que reproduce un servicio de transmisión o una notificación de un nuevo correo electrónico) y, luego, pasa el audio atributos de origen al framework, donde el sistema de audio usa los atributos para tomar decisiones de combinación y notificar a las aplicaciones sobre el estado de la en un sistema de archivos.

En Android 4.4 y versiones anteriores, el framework tomaba decisiones de combinación usando solo el tipo de transmisión de audio. Sin embargo, basar esas decisiones en el tipo de transmisión era demasiado para producir resultados de calidad en varias aplicaciones y dispositivos. Por ejemplo, en un dispositivo móvil, algunas aplicaciones (es decir, Google Maps) reprodujeron rutas en auto 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 combinar la conducción instrucciones sobre cómo llegar con otras transmisiones de contenido multimedia.

Con el Audio API de Attribute, las aplicaciones le proporcionan al sistema de audio información información sobre una fuente de audio específica, incluido el uso (por qué la fuente se en reproducción), tipo de contenido (lo que se está reproduciendo), marcas (cómo se reproduce la fuente) se debe jugar) 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 enrutamiento, enfoque y volumen.
  • Tipo de contenido. Especifica qué se está reproduciendo la fuente (música, película, discurso, sonificación, desconocida).
  • Context. Valores de uso abstraídos de la HAL de audio.
  • Marcas. Especifica cómo se debe reproducir la fuente. Incluye compatibilidad con la aplicación de la audibilidad (se requieren sonidos del obturador de la cámara en algunos países) y la sincronización de audio y video del hardware.

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

Usar atributos

El uso especifica el contexto en el que se usa la transmisión y proporciona información sobre por qué se reproduce el sonido y para qué se utiliza. La información de uso es más expresiva que un tipo de transmisión y permite que las o las políticas de enrutamiento para definir mejor las decisiones de volumen o enrutamiento.

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

  • USAGE_UNKNOWN
  • USAGE_MEDIA
  • USAGE_VOICE_COMMUNICATION
  • USAGE_VOICE_COMMUNICATION_SIGNALLING
  • ALARMA_DE_USA
  • NOTIFICACIÓN_DE_USAGE
  • TELÉFONO_DE_NOTIFICACIONES_DE_USAGE_TELEPHONY_RINGTONE
  • SOLICITUD_DE_NOTIFICACIONES_DE_USAGE_COMMUNICATION_REQUEST
  • NOTIFICACIÓN_USA_COMUNICACIÓN_INSTANT
  • USAGE_NOTIFICATION_COMMUNICATION_DELAYED
  • EVENTO DE NOTIFICACIÓN USAGE
  • USAGE_ASSISTANCE_ACCESSIBILITY
  • USAGE_ASSISTANCE_NAVIGATION_GUÍA
  • USAGE_ASSISTANCE_SONIFICATION
  • USAGE_GAME
  • USAGE_VIRTUAL_SOURCE
  • ASISTENTE_DE_USO

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

Tipo de contenido

El tipo de contenido define el sonido y expresa la categoría general de como una película, un discurso o un pitido o tono. El framework de audio usa información del tipo de contenido para configurar de manera selectiva el posprocesamiento de audio bloques. Si bien proporcionar el tipo de contenido es opcional, debes incluirlo información cada vez que se conoce el tipo de contenido, como el uso CONTENT_TYPE_MOVIE para un servicio de transmisión de películas o CONTENT_TYPE_MUSIC para una app de reproducción de música

Proporciona 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 del tipo de contenido del atributo de audio son mutuamente excluyentes. Para obtener detalles sobre los tipos de contenido, consulta la audio de atributos de imagen.

Contextos

La aplicación responsable y el motivo identifican cada sonido en Android. para generar el sonido; y 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 con tipos de transmisión heredados (p.ej., AudioSystem.STREAM_MUSIC) o AudioAttributes. En Android 9, valores AudioAttributes.usage a nivel de la HAL, se abstraen como Contextos.

Contextos de audio de la HAL Uso de AudioAttributes
MÚSICA CONTENIDO MULTIMEDIA
VOICE_COMMAND ASISTENTE_DE_USO
NAVIGATION NAVEGACIÓN_DE_ASISTENCIA
CALL COMUNICACIÓN_VOZ
TONO TONO_DE_NOTIFICACIONES
NOTIFICACIÓN NOTIFICACIÓN
ALARMA ALARMA
SONIDO_SISTEMA ASISTENCIA_SONIFICACIÓN
DESCONOCIDO DESCONOCIDO

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

  • MUSIC_CONTEXT // Reproducción de música
  • NAVIGATION_CONTEXT // Instrucciones de navegación
  • VOICE_COMMAND_CONTEXT // Sesión de comando por voz
  • CALL_RING_CONTEXT // Llamada de voz sonando
  • CALL_CONTEXT // Llamada de voz
  • ALARM_CONTEXT // Sonido de alarma de Android
  • NOTIFICACIÓN_CONTEXTO // Notificaciones
  • SYSTEM_SON_CONTEXT // Sonidos de la interacción del usuario (clics en botones, etc.)

Marcas

Las marcas especifican cómo el framework de audio aplica efectos a la reproducción de audio. Proporciona una o más de las siguientes marcas para una instancia:

  • FLAG_AUDIBILITY_ENFORCED Solicita al sistema que se asegure de que el la audibilidad del sonido. Usar para abordar las necesidades de los sistemas STREAM_SYSTEM_ENFORCED (por ejemplo, forzar los sonidos del obturador de la cámara).
  • HW_AV_SYNC Solicita al sistema que seleccione una transmisión de salida compatible con la sincronización de A/V de hardware.

Las marcas de atributos de audio no son exclusivas y se pueden combinar. Para obtener detalles estas marcas, consulta la audio de atributos de imagen.

Ejemplo

En este ejemplo, AudioAttributes.Builder define la Un nuevo AudioTrack usará la AudioAttributes instancia:

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 deberían usar atributos de audio cuando creen o actualicen para Android 5.0 y versiones posteriores. Sin embargo, las aplicaciones no son necesarias para aprovechar los atributos. pueden manejar tipos de transmisiones heredadas solo o que no conocen los atributos (es decir, un reproductor multimedia genérico que no tiene saber algo sobre el contenido que se está reproduciendo).

En esos casos, el framework mantiene la retrocompatibilidad con versiones anteriores y versiones de Android a través de la traducción automática de la transmisión de audio tipos a atributos de audio. Sin embargo, el framework no aplica garantizar esta asignación en todos los dispositivos, fabricantes o versiones de Android.

Asignaciones de compatibilidad:

Android 5.0 y versiones posteriores Android 4.4 y versiones 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 (@ocultar) STREAM_BLUETOOTH_SCO
FLAG_AUDIBILITY_ENFORCED (@ocultar) STREAM_SYSTEM_ENFORCED
CONTENT_TYPE_SONIFICATION
USAGE_VOICE_COMMUNICATION_SIGNALLING
(@ocultar) STREAM_DTMF

Tipos de transmisiones obsoletos

En Android 9, los siguientes tipos de transmisiones dejan de estar disponibles para uso en la industria automotriz:

  • CONFIGURACIÓN PREDETERMINADA
  • STREAM_VOICE_CALL
  • SISTEMA_DE_TRANSMISIÓN
  • SONIDO DE TRANSMISIONES
  • MÚSICA DE TRANSMISIONES
  • ALARMA DE TRANSMISIÓN
  • NOTIFICACIÓN_DE_TRANSMISIÓN
  • TRANSMISIONES_BLUETOOTH_SCO
  • SISTEMA_DE_TRANSMISIÓN_APLICADO
  • TRANSMISIÓN_DTMF
  • TRANSMISIONES_TTS
  • ACCESIBILIDAD A TRANSMISIONES

Para obtener más detalles, consulta Audio de automóviles.