Cambiar la salida de audio de la llamada

Esta guía explica cómo cambiar la salida de audio de la llamada con el Vonage Client SDK. Antes de comenzar, asegúrate de haber agregado el SDK a tu aplicación y (Android, iOS, JS) y podrá hacer o reciba llamadas.

NOTA: Actualmente no hay compatibilidad con el enrutamiento de la salida de audio en los navegadores móviles ni en Safari, por lo que los ejemplos de JavaScript que se muestran a continuación solo son aplicables a los navegadores de escritorio, tal y como se detalla en este tabla de compatibilidad.

Android

Para permitir el cambio de salida de audio sin problemas dentro de su aplicación Android, usted querrá integrar ConnectionService. Esto permite que el sistema operativo gestione el enrutamiento de la salida de audio a través de la interfaz de usuario de llamada predeterminada con la que los usuarios estarán familiarizados.

Android ConnectionService Recursos:

  • Aplicación de referencia de voces que utiliza ConnectionService - GitHub

Detección de cambios en las rutas de salida de audio

Puedes suscribirte a la onCallAudioStateChanged o onCallEndpointChanged métodos delegados en función de su nivel de API para observar los cambios en la salida de audio:

// Android API 34 and above
override fun onCallEndpointChanged(callEndpoint: CallEndpoint) {
        state ?: return
        println("New Callendpoint ${callEndpoint}")
}
// Android API 33 and below

override fun onCallAudioStateChanged(state: CallAudioState?) {
        state ?: return
        println("is curent audio state route ${state.route == ROUTE_BLUETOOTH}")
}

iOS

Para permitir un cambio fluido de la salida de audio dentro de tu aplicación para iOS, te conviene integrar CallKit. Esto permite a los respectivos sistemas operativos gestionar el enrutamiento de la salida de audio a través de la interfaz de usuario de llamada predeterminada con la que los usuarios estarán familiarizados.

iOS CallKit Recursos:

  • Aplicación de referencia de voces que utiliza CallKit - GitHub

  • Cómo manejar las notificaciones push de VoIP utilizando iOS Callkit - Blog

  • Realizar llamadas salientes con CallKit de iOS - Blog

Obtener rutas de salida de audio

let outputs = AVAudioSession.sharedInstance().currentRoute.outputs

Detección de cambios en las rutas de salida de audio

Puedes suscribirte a la AVAudioSession.routeChangeNotification Notificación para estar atento a los cambios en la salida de audio:

// myRouteChangeHandler is a function you need to create

NotificationCenter.default.addObserver(self, selector: #selector(myRouteChangeHandler), name: AVAudioSession.routeChangeNotification, object: nil)

Cambio de las rutas de salida de audio

Puedes anular la salida de audio al altavoz:

AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)

Hay más información disponible en la Documentación de Apple.

JavaScript (ordenador de sobremesa)

Los navegadores móviles no admiten el enrutamiento de la salida de audio, por lo que los ejemplos de JavaScript que se muestran a continuación solo son aplicables a los navegadores de ordenador. Hay un propuesta para añadir compatibilidad con la API web.

Obtener rutas de salida de audio

Antes de intentar cambiar las rutas de salida de audio, debes comprobar qué rutas tienes disponibles:

Cambio de las rutas de salida de audio

Cuando se crea una llamada, el Vonage Client SDK creará una HTMLAudioElement y adjuntar el flujo de salida de la llamada a su srcObject. Puede acceder al elemento de audio con lo siguiente:

El HTMLAudioElement tiene un método llamado setSinkId que llevará el deviceId y utilízalo para configurar el dispositivo de salida de audio deseado como el HTMLAudioElement fuente:

NOTA: El setSinkId no es compatible con Safari y algunas versiones antiguas de navegadores. Ver la tabla de compatibilidad para conocer las versiones exactas.

Referencia