Modification de la sortie audio de l'appel

Ce guide explique comment modifier la sortie audio d'un appel avec le Client Vonage SDK. Avant de commencer, assurez-vous d'avoir ajouté le SDK à votre application et (Android, iOS, JS) et vous pouvez faire ou recevoir appels.

NOTE : Il n'y a actuellement aucune prise en charge du routage de la sortie audio dans les navigateurs mobiles et Safari, de sorte que les exemples JavaScript ci-dessous ne s'appliquent qu'aux navigateurs de bureau, comme indiqué dans le présent document. tableau de compatibilité.

Android

Pour permettre une commutation transparente de la sortie audio dans votre application Android, vous devez intégrer les éléments suivants ConnectionService. Cela permet au système d'exploitation de gérer l'acheminement de la sortie audio via l'interface utilisateur par défaut que les utilisateurs connaissent bien.

Android ConnectionService Ressources :

  • In-App Voice App utilisant ConnectionService - GitHub

Détection des changements dans les routes de sortie audio

Vous pouvez vous abonner à la onCallAudioStateChanged ou onCallEndpointChanged en fonction de votre niveau d'API pour observer les changements dans la sortie 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

Pour permettre une commutation transparente de la sortie audio au sein de votre application iOS, vous devez intégrer CallKit. Cela permet aux systèmes d'exploitation respectifs de gérer l'acheminement de la sortie audio via l'interface utilisateur par défaut que les utilisateurs connaissent bien.

iOS CallKit Ressources :

  • In-App Voice App utilisant CallKit - GitHub

  • Comment gérer les notifications push de VoIP avec iOS Callkit - Blog

  • Passer des appels sortants avec iOS CallKit - Blog

Obtention des routes de sortie audio

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

Détection des changements dans les routes de sortie audio

Vous pouvez vous abonner à la AVAudioSession.routeChangeNotification pour observer les changements dans la sortie audio :

// myRouteChangeHandler is a function you need to create

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

Modification des itinéraires de sortie audio

Vous pouvez modifier la sortie audio vers le haut-parleur :

AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)

De plus amples informations sont disponibles sur le site Documentation Apple.

JavaScript (Desktop)

Il n'y a pas de prise en charge du routage de la sortie audio dans les navigateurs mobiles, les exemples JavaScript ci-dessous ne sont donc applicables qu'aux navigateurs de bureau. Il existe une fonction proposition pour ajouter un support à l'API Web.

Obtention des routes de sortie audio

Avant d'essayer de modifier les routes de sortie audio, vous devez vérifier quelles sont les routes disponibles :

const audioOutputDevices = await navigator.mediaDevices.enumerateDevices().then(devices => devices.filter(d => d.kind == "audiooutput"));

Modification des itinéraires de sortie audio

Lorsqu'un appel est créé, le Client SDK de Vonage créera un fichier HTMLAudioElement et attache le flux de sortie de l'appel à son fichier srcObject. Vous pouvez accéder à l'élément audio avec ce qui suit :

const audioOutputElement = client.getAudioOutputElement();

Les HTMLAudioElement possède une méthode appelée setSinkId qui prendra le deviceId et l'utiliser pour régler le périphérique de sortie audio souhaité sur le bouton HTMLAudioElement source :

audioElement.setSinkId(audioOutputDevices[2].deviceId);

REMARQUE : Le setSinkId n'est pas supportée par Safari et certaines versions plus anciennes de navigateurs. Voir les tableau de compatibilité pour les versions exactes.

Référence