Sortie audio pour les appels (Android)

Pour permettre une commutation fluide de la sortie audio au sein de votre application, vous devrez intégrer le framework Telecom d'Android. Telecom permet à votre application de gérer efficacement les services d'appel, garantissant ainsi une expérience utilisateur fluide. Veuillez vous reporter à la documentation officielle d'Android sur Telecom. ici.

Intégration des télécommunications

Pour obtenir des conseils détaillés sur l'intégration du cadre « Telecom » à votre projet, veuillez consulter Intégration des télécommunications.

Observation des modifications de la sortie audio

Vous pouvez vous abonner à la méthode de délégation onCallAudioStateChanged ou onCallEndpointChanged pour observer les modifications apportées à la sortie audio.

Voici comment procéder :

Pour Android API 33 et versions antérieures

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

Pour Android API 34 et versions ultérieures

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

Vous pouvez également redéfinir la source de sortie audio à l'aide de setAudioRoute ou modification du point de terminaison de l'appel :

Pour Android API 33 et versions antérieures

call.setAudioRoute(CallAudioState.ROUTE_BLUETOOTH)

Pour Android API 34 et versions ultérieures

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

Nous vous recommandons d'éviter d'utiliser ces méthodes pour acheminer la sortie audio et de vous en tenir exclusivement à l'interface utilisateur intégrée de Telecom afin de bénéficier d'une meilleure expérience.