Salida de audio para llamadas (Android)

Para permitir un cambio fluido de la salida de audio dentro de tu aplicación, te recomendamos integrar el marco Telecom de Android. Telecom permite a tu aplicación gestionar los servicios de llamadas de forma eficiente, lo que garantiza una experiencia de usuario fluida. Consulta la documentación oficial de Android sobre Telecom. aquí.

Integración de telecomunicaciones

Para obtener orientación detallada sobre cómo integrar el marco de Telecom en su proyecto, consulte Integración de telecomunicaciones.

Observación de los cambios en la salida de audio

Puedes suscribirte al método delegado onCallAudioStateChanged o onCallEndpointChanged para observar los cambios en la salida de audio.

Así es como puedes hacerlo:

Para la API de Android 33 y versiones anteriores

override fun onCallAudioStateChanged(state: CallAudioState?) {
        state ?: return
        // highlight-next-line
        println("New call route: ${state.route}")
}

Para Android API 34 y superior

override fun onCallEndpointChanged(callEndpoint: CallEndpoint) {
        // highlight-next-line
        println("New call endpoint: ${callEndpoint}")
}

También puedes anular la fuente de salida de audio utilizando setAudioRoute o solicitarCambioDePuntoFinalDeLlamada :

Para la API de Android 33 y versiones anteriores

call.setAudioRoute(CallAudioState.ROUTE_BLUETOOTH)

Para Android API 34 y superior

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

Recomendamos evitar el uso de esos métodos para canalizar la salida de audio y utilizar únicamente la interfaz de usuario integrada de Telecom para disfrutar de una mejor experiencia.