Alteração da saída de áudio das chamadas
Este guia explica como alterar a saída de áudio das chamadas usando o Vonage Client SDK. Antes de começar, certifique-se de ter adicionado o SDK ao seu aplicativo e (Android, iOS, JS) e você consegue fazer ou receber chamadas.
NOTA: Atualmente, não há suporte para o roteamento de saída de áudio em navegadores móveis e no Safari; portanto, os exemplos de JavaScript abaixo se aplicam apenas a navegadores de desktop, conforme detalhado neste tabela de compatibilidade.
Android
Para permitir a alternância contínua da saída de áudio em seu aplicativo Android, você precisará integrar ConnectionService. Isso permite que o sistema operacional gerencie o roteamento da saída de áudio por meio da interface de usuário padrão com a qual os usuários já estão familiarizados.
Android ConnectionService Recursos:
- Aplicativo de referência de voz utilizando
ConnectionService- GitHub
Detecção de alterações nas rotas de saída de áudio
Você pode se inscrever no onCallAudioStateChanged ou onCallEndpointChanged Delegue métodos, dependendo do seu nível de API, para monitorar alterações na saída de áudio:
// Android API 34 and above
override fun onCallEndpointChanged(callEndpoint: CallEndpoint) {
state ?: return
println("New Callendpoint ${callEndpoint}")
}
// Android API 33 and below
override fun onCallAudioStateChanged(state: CallAudioState?) {
state ?: return
println("is curent audio state route ${state.route == ROUTE_BLUETOOTH}")
}
iOS
Para permitir a alternância contínua da saída de áudio em seu aplicativo iOS, você deve integrar CallKit. Isso permite que os respectivos sistemas operacionais gerenciem o roteamento da saída de áudio por meio da interface de usuário padrão de chamadas, com a qual os usuários já estão familiarizados.
iOS CallKit Recursos:
Aplicativo de referência de voz utilizando
CallKit- GitHubComo lidar com notificações push de VoIP usando o CallKit do iOS - Blog
Fazer chamadas de saída usando o CallKit do iOS - Blog
Obtendo as rotas de saída de áudio
let outputs = AVAudioSession.sharedInstance().currentRoute.outputs
Detecção de alterações nas rotas de saída de áudio
Você pode se inscrever no AVAudioSession.routeChangeNotification notificação para observar alterações na saída de áudio:
// myRouteChangeHandler is a function you need to create
NotificationCenter.default.addObserver(self, selector: #selector(myRouteChangeHandler), name: AVAudioSession.routeChangeNotification, object: nil)
Alteração das rotas de saída de áudio
Você pode redirecionar a saída de áudio para o alto-falante:
AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
Mais informações estão disponíveis no Documentação da Apple.
JavaScript (computador)
Não há suporte para o direcionamento da saída de áudio em navegadores móveis; portanto, os exemplos em JavaScript abaixo se aplicam apenas a navegadores de desktop. Há um proposta para adicionar suporte à API da Web.
Obtendo as rotas de saída de áudio
Antes de tentar alterar as rotas de saída de áudio, você deve verificar quais rotas estão disponíveis:
const audioOutputDevices = await navigator.mediaDevices.enumerateDevices().then(devices => devices.filter(d => d.kind == "audiooutput"));
Alteração das rotas de saída de áudio
Quando uma chamada é criada, o Vonage Client SDK criará um HTMLAudioElement e anexar o fluxo de saída da chamada ao seu srcObject. Você pode acessar o elemento de áudio da seguinte maneira:
const audioOutputElement = client.getAudioOutputElement();
O HTMLAudioElement possui um método chamado setSinkId o que levará ao deviceId e use isso para definir o dispositivo de saída de áudio desejado como o HTMLAudioElement fonte:
audioElement.setSinkId(audioOutputDevices[2].deviceId);
NOTA: O setSinkId Esse método não é compatível com o Safari e com algumas versões mais antigas do navegador. Veja o tabela de compatibilidade para saber as versões exatas.