Ofrezca una experiencia de audio envolvente con audio espacial

[ad_1]


Publicado por Nevin Mital, ingeniero de relaciones con los desarrolladores, Android Media

En Android 13 (nivel de API 33), presentamos una nueva arquitectura de plataforma estandarizada para audio espacial, una experiencia de audio superior y más atractiva. Con audio espacial, su contenido sonará más realista para los usuarios, ya que parece que están justo en el medio de la acción. Los instrumentos individuales de una banda se pueden separar y "colocar" alrededor del usuario, o el sonido de una ballena aumentará de volumen a medida que se acerca por detrás y disminuirá a medida que se aleja nadando. Siga leyendo para obtener más información sobre la compatibilidad de Android con el audio espacial y cómo implementar la función en su aplicación.

Audio espacial en Android

Hay dos distinciones principales de Spatial Audio:

  • Con estático Audio espacial, los sonidos se anclan al usuario y se mueven con él. Un pájaro que canta a tu izquierda siempre estará a tu izquierda sin importar cómo gires o muevas la cabeza.
  • Con audio espacial con seguimiento de la cabezalos sonidos se posicionan en el entorno del usuario. Al girar la cabeza hacia la izquierda, el usuario ahora escucha el canto del pájaro frente a él.
TEXTO ALTERNATIVO

Configurado en Android solo audio multicanal con el derecho Atributos de audio y formato de audio está espacializado de forma predeterminada, aunque los OEM pueden personalizar este comportamiento. En los dispositivos en los que el OEM ha integrado un efecto espacializador, el audio espacial estático funcionará cuando cualquier auricular esté conectado al dispositivo, aunque el audio espacial con seguimiento de la cabeza requiere un auricular con sensores de seguimiento de la cabeza compatibles. Los OEM como Pixel, OnePlus y Xiaomi ya han puesto estas experiencias a disposición de sus usuarios.

Implementar y probar audio espacial

¡La forma más fácil de integrar esta función es usar ExoPlayer! Si está utilizando ExoPlayer de Jetpack Media3 Release 1.0.0 o posterior, ExoPlayer configura el decodificador para evitar que el audio multicanal se mezcle a estéreo y el comportamiento de selección de pista predeterminado tiene en cuenta si la espacialización es posible o no. Esto significa que su contenido solo necesita contener una pista de audio multicanal para que ExoPlayer la seleccione. ExoPlayer supervisa el estado del dispositivo y elige una pista multicanal cuando la espacialización es posible, o cambia a una pista estéreo cuando no es posible.

Android 12L (API nivel 32) agregó el nuevo espacializador clase que le permite consultar las capacidades de espacialización del dispositivo. Hay cuatro condiciones, todas las cuales deben cumplirse para que el dispositivo emita audio espacial:


val audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
val spatializer = audioManager.spatializer

if (

spatializer.immersiveAudioLevel != Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE

&& spatializer.isEnabled

&& spatializer.isAvailable

&& spatializer.canBeSpatialized(audioAttributes, audioFormat)
) {

} else {

}

ExoPlayer realiza estas comprobaciones al decidir qué pista de audio seleccionar. Para comprobar si el seguimiento de la cabeza está disponible, puede llamar al isHeadTrackerDisponible() Método. El espacializador La clase también incluye los siguientes oyentes para responder a los cambios de estado del dispositivo:

OnSpatializerStateChangedListener

Para cambiar si el espacializador está habilitado o disponible.

OnHeadTrackerAvailableListener

Para cambios si el seguimiento de la cabeza está disponible.

Con estas señales, puede sintonizar manualmente su reproducción al audio espacial. Tenga en cuenta que si no está utilizando ExoPlayer, asegúrese de configurar el decodificador para emitir audio multicanal siempre que sea posible configurando el número máximo de canales en un número grande con MediaFormat.setInteger(MediaFormat.KEY_MAX_OUTPUT_CHANNEL_COUNT, ##). Mira cómo lo hace ExoPlayer en GitHub. Según el caso de uso, hay dos formas de evitar la espacialización. Si su audio ya es espacial, llame setIsContentSpatialized(true) al configurar el Atributo de audio para su flujo de audio para evitar que el audio se procese dos veces. En todos los demás casos, puede llamar en su lugar setSpatializationBehavior(AudioAttributes.SPATIALIZATION_BEHAVIOR_NEVER) Deshabilite la espacialización por completo.

Como se mencionó anteriormente, el uso de audio espacial requiere un dispositivo compatible (es decir, obtenerNivelAudioInmersivo() hace no regresar SPATIALIZER_IMMERSIVE_LEVEL_NONE) y un auricular conectado. Para probar el audio espacial, primero asegúrese de que la función esté habilitada en la configuración:

  • Para auriculares con cable, vaya a Preferencias del sistema > Sonido y vibración > Audio espacial.
  • Para auriculares inalámbricos, vaya a Configuración del sistema > Dispositivos conectados > Ícono de engranaje para su dispositivo inalámbrico > Audio espacial.

Tenga en cuenta que el audio espacial de seguimiento de la cabeza requiere que los auriculares tengan sensores de seguimiento de la cabeza compatibles con el dispositivo, p. B. Los Pixel Buds Pro con un teléfono Pixel y el seguimiento de la cabeza también deben estar habilitados en la configuración.

Próximos pasos

Oír es creer, ¡así que te recomendamos que pruebes el audio espacial por ti mismo! Para ver una implementación de ejemplo, consulte nuestra aplicación de muestra Universal Android Music Player. Para obtener más detalles sobre todo lo discutido aquí, consulte nuestra Guía para desarrolladores de audio espacial.

[ad_2]

Si quieres conocer otros artículos parecidos a Ofrezca una experiencia de audio envolvente con audio espacial puedes visitar la categoría Android.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir