Saída de áudio para chamadas (Android)
Para permitir a alternância contínua da saída de áudio dentro do seu aplicativo, é recomendável integrar a estrutura Telecom do Android. A Telecom permite que seu aplicativo gerencie os serviços de chamadas com eficiência, garantindo uma experiência de usuário tranquila. Consulte a documentação oficial do Android sobre a Telecom aqui.
Integração de Telecomunicações
Para obter orientações completas sobre como integrar a estrutura de telecomunicações ao seu projeto, consulte Integração de telecomunicações.
Observando as alterações na saída de áudio
Você pode assinar um método delegado onCallAudioStateChanged ou onCallEndpointChanged para observar as mudanças na saída de áudio.
Veja como você pode fazer isso:
Para a API do Android 33 e versões anteriores
override fun onCallAudioStateChanged(state: CallAudioState?) {
state ?: return
// highlight-next-line
println("New call route: ${state.route}")
}
Para a API do Android 34 e versões superiores
override fun onCallEndpointChanged(callEndpoint: CallEndpoint) {
// highlight-next-line
println("New call endpoint: ${callEndpoint}")
}
Você também pode substituir a fonte de saída de áudio usando definir rota de áudio ou solicitarAlteraçãoDoPontoDeFimDaChamada :
Para a API do Android 33 e versões anteriores
call.setAudioRoute(CallAudioState.ROUTE_BLUETOOTH)
Para a API do Android 34 e versões superiores
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 o uso desses métodos para direcionar a saída de áudio e utilizar apenas a interface de usuário integrada do Telecom para uma experiência melhor.