Audioausgabe für Anrufe (Android)
Um eine nahtlose Umschaltung der Audioausgabe innerhalb Ihrer Anwendung zu ermöglichen, sollten Sie das Android-Telecom-Framework integrieren. Mit Telecom kann Ihre App Anrufdienste effizient verwalten und so ein reibungsloses Nutzererlebnis gewährleisten. Weitere Informationen finden Sie in der offiziellen Android-Dokumentation zu Telecom. hier.
Integration der Telekommunikation
Umfassende Anleitungen zur Integration des Telecom-Frameworks in Ihr Projekt finden Sie unter Telekommunikationsintegration.
Beobachtung von Änderungen bei der Audioausgabe
Sie können die Delegate-Methode abonnieren onCallAudioStateChanged oder onCallEndpointChanged um Veränderungen in der Audioausgabe zu beobachten.
So geht's:
Für Android API 33 und darunter
override fun onCallAudioStateChanged(state: CallAudioState?) {
state ?: return
// highlight-next-line
println("New call route: ${state.route}")
}
Für Android API 34 und höher
override fun onCallEndpointChanged(callEndpoint: CallEndpoint) {
// highlight-next-line
println("New call endpoint: ${callEndpoint}")
}
Sie können die Audioausgabequelle auch wie folgt überschreiben: setAudioRoute oder requestCallEndpointChange :
Für Android API 33 und darunter
call.setAudioRoute(CallAudioState.ROUTE_BLUETOOTH)
Für Android API 34 und höher
override fun onAvailableCallEndpointsChanged(availableEndpoints: List<CallEndpoint>) {
for (endpoint in availableEndpoints) {
if (endpoint.endpointType == CallEndpoint.ENDPOINT_TYPE_BLUETOOTH) {
requestCallEndpointChange(
endpoint,
Executor { it.run() },
object : OutcomeReceiver<Void, CallEndpointException> {
override fun onResult(result: Void?) {
// Successfully switched to Bluetooth
}
override fun onError(error: CallEndpointException) {
// Handle error during endpoint change
}
}
)
break
}
}
}
Wir empfehlen, diese Methoden zur Weiterleitung der Audioausgabe zu vermeiden und sich ausschließlich auf die integrierte Benutzeroberfläche von Telecom zu verlassen, um ein besseres Erlebnis zu gewährleisten.