Ä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- GitHubWie 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.