Ändern der Audioausgabe von Anrufen

In dieser Anleitung wird beschrieben, wie Sie die Audioausgabe von Anrufen mit dem Vonage Client SDK ändern können. Bevor Sie beginnen, stellen Sie sicher, dass Sie das SDK zu Ihrer App hinzugefügt haben und (Android, iOS, JS) und Sie sind in der Lage machen. oder erhalten Anrufe.

HINWEIS: Derzeit gibt es keine Unterstützung für das Audio-Output-Routing in mobilen Browsern und Safari, so dass die folgenden JavaScript-Beispiele nur auf Desktop-Browser anwendbar sind, wie in diesem Artikel beschrieben Kompatibilitätstabelle.

Android

Um einen nahtlosen Wechsel der Audioausgabe in Ihrer Android-Anwendung zu ermöglichen, müssen Sie Folgendes integrieren ConnectionService. Dadurch kann das Betriebssystem das Routing der Audioausgabe über die standardmäßige Anruferschnittstelle abwickeln, mit der die Benutzer vertraut sind.

Android ConnectionService Ressourcen:

  • Sprachreferenz-App mit ConnectionService - GitHub

Erkennen von Änderungen in Audioausgangsrouten

Sie können sich bei der onCallAudioStateChanged oder onCallEndpointChanged Delegate-Methoden je nach API-Level, um Änderungen in der Audioausgabe zu beobachten:

// 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

Um ein nahtloses Umschalten der Audioausgabe in Ihrer iOS-Anwendung zu ermöglichen, müssen Sie Folgendes integrieren CallKit. Dies ermöglicht es den jeweiligen Betriebssystemen, das Routing der Audioausgabe über die den Benutzern vertraute Standardaufrufschnittstelle zu steuern.

iOS CallKit Ressourcen:

  • Sprachreferenz-App mit CallKit - GitHub

  • Wie man VoIP-Push-Benachrichtigungen mit iOS Callkit handhaben - Blog

  • Ausgehende Anrufe mit iOS CallKit tätigen - Blog

Audio-Ausgangsrouten abrufen

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

Erkennen von Änderungen in Audioausgangsrouten

Sie können sich bei der AVAudioSession.routeChangeNotification Benachrichtigung, um Änderungen in der Audioausgabe zu beobachten:

// myRouteChangeHandler is a function you need to create

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

Ändern der Audioausgangsrouten

Sie können die Audioausgabe an den Lautsprecher außer Kraft setzen:

AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)

Weitere Informationen finden Sie auf der Website Apple-Dokumentation.

JavaScript (Desktop)

Es gibt keine Unterstützung für das Routing der Audioausgabe in mobilen Browsern, daher sind die folgenden JavaScript-Beispiele nur für Desktop-Browser geeignet. Es gibt eine Vorschlag um die Unterstützung für die Web-API zu erweitern.

Audio-Ausgangsrouten abrufen

Bevor Sie versuchen, die Audioausgangswege zu ändern, sollten Sie prüfen, welche Wege Ihnen zur Verfügung stehen:

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

Ändern der Audioausgangsrouten

Wenn ein Anruf aufgebaut wird, erstellt das Vonage Client SDK eine HTMLAudioElement und hängen Sie den Ausgabestrom des Aufrufs an dessen srcObject. Sie können das Audio-Element mit dem Folgenden aufrufen:

const audioOutputElement = client.getAudioOutputElement();

Die HTMLAudioElement hat eine Methode namens setSinkId die die deviceId und stellen Sie damit das gewünschte Audio-Ausgabegerät auf den HTMLAudioElement Quelle:

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

HINWEIS: Die setSinkId Methode wird von Safari und einigen älteren Browser-Versionen nicht unterstützt. Ansicht der Kompatibilitätstabelle für die genauen Versionen.

Referenz