Atualizações da API de roteamento de áudio no Android 14 para apps de VoIP

O Android 14 introduziu atualizações de API acompanhadas de mudanças na experiência do usuário para o comportamento de roteamento de áudio para dispositivos Bluetooth LE Audio (LEA), incluindo aparelhos auditivos. Essas mudanças afetaram a forma como os apps de VoIP gerenciam a seleção de saída de áudio. Este documento fornece informações essenciais para que os desenvolvedores adaptem os apps de VoIP a essas mudanças e garantam uma experiência do usuário perfeita.

Mudança de comportamento no Android 14

  • Roteamento de dispositivo LEA:agora os dispositivos LEA são ativados por padrão em smartphones Pixel e AOSP. No entanto, para reconhecer e selecionar ativamente os dispositivos LEA como saída de áudio, os apps precisam usar as novas APIs introduzidas no nível 31 da API.
  • Roteamento de aparelho auditivo:antes, o áudio sempre era direcionado para os aparelhos auditivos, mesmo que o usuário selecionasse explicitamente o fone de ouvido. No Android 14, os aparelhos auditivos agora são apresentados como uma das opções de saída de áudio disponíveis, exigindo seleção explícita do usuário.

Motivo da mudança

  • Antes do Android 12, não havia uma API para usar aparelhos auditivos explicitamente para ligações, o que fazia com que o áudio sempre fosse direcionado para os aparelhos auditivos quando conectado.
  • Isso dificultava a troca de aparelhos auditivos para fones de ouvido sem desconectar os aparelhos auditivos.
  • O mesmo problema se aplica a fones de ouvido Bluetooth LE Audio.

Para resolver esses desafios, o Android 14 introduziu mudanças para oferecer aos apps de VoIP mais controle sobre o roteamento de áudio e garantir um comportamento consistente em acessórios Bluetooth.

Principais mudanças no Android 14

  • APIs genéricas para seleção de rota:o Android 12 introduziu AudioManager.setCommunicationDevice para permitir que os apps especifiquem rotas de áudio, incluindo aparelhos auditivos e dispositivos LEA. No entanto, no Android 12 e 13, os aparelhos auditivos não eram visíveis como dispositivos, limitando a utilidade dessa API.
  • Visibilidade de aparelhos auditivos:no Android 14, os aparelhos auditivos agora são visíveis como dispositivos, permitindo que os apps forneçam elementos de interface para que os usuários selecionem a saída de áudio preferida.
  • Descontinuações de API:várias APIs relacionadas ao roteamento de áudio foram descontinuadas no Android 14. Os desenvolvedores precisam migrar para as novas APIs introduzidas no nível 31 da API para gerenciar a seleção de saída de áudio de maneira eficaz.

Ações obrigatórias do desenvolvedor

  • Altamente recomendado:migre para a biblioteca Telecom do Jetpack. Se possível, migre seu app VoIP para a biblioteca Telecom Jetpack e simplifique o gerenciamento do roteamento de áudio.
  • Use setCommunicationDevice() ou as APIs mais recentes (listadas abaixo) se a migração não for viável.

APIs descontinuadas e as substituições delas

Descontinuado no Android 14 Novas APIs
AudioManager.isBluetoothScoOn() AudioManager.getCommunicationDevice()
AudioManager.isSpeakerphoneOn()
AudioManager.setSpeakerphoneOn() AudioManager.setCommunicationDevice()
AudioManager.startBluetoothSco()
AudioManager.stopBluetoothSco() AudioManager.clearCommunicationDevice() (link em inglês)
Connection.getCallAudioState() Jetpack:
CallControlScope.getAvailableEndpoints()
CallControlScope.getCurrentCallEndpoint()
CallControlScope#isMuted()

Plataforma:
CallEventCallback.onAvailableCallEndpointsChanged()
CallEventCallback.onCallEndpointChanged()
CallEventCallback.onMuteStateChanged()
Connection.onCallAudioStateChanged()
Connection.requestBluetoothAudio() (em inglês) Jetpack:
CallControlScope#requestEndpointChange()

Plataforma:
CallControl#requestCallEndpointChange()
Connection.setAudioRoute()