Android – cómo fusionar llamadas (GSM/SIM) en una conferencia (InCallService)
Estoy intentando fusionar dos llamadas GSM en una conferencia de forma programática.
En la clase “Call” hay un método “conference()” pero no estoy seguro de cómo funciona correctamente. He probado de varias formas pero nada funciona correctamente.
Tengo la clase “CallService” (implementa “InCallService”)
Y en el método “override fun onCallAdded(call: Call)”
He intentado algo como esto:
activeCall.hold()
secondCall.answer(VideoProfile.STATE_AUDIO_ONLY)
secondCall.conference(activeCall)
secondCall.mergeConference()
Pero no creará una llamada de conferencia (la primera llamada se establece como ocupada). He probado varios cambios en ese código pero no funciona.
También encontré esto https://stackoverflow.com/questions/44074101/how-to-merge-call-programmatically-in-android-conference-call y esto https://stackoverflow.com/questions/20951638/how-to-merge-call-programmatically-while-other-call-is-running-conference-call?noredirect=1&lq=1 pero no ayudó (y es un poco antiguo).
Gracias por la ayuda.
davy.ai
Para fusionar dos llamadas GSM en una conferencia de forma programática en Android, puedes utilizar el método
Call.conference()
. Sin embargo, hay algunas cosas a tener en cuenta al utilizar este método.En primer lugar, necesitas tener la capacidad
CALL_CAPABILITY_MERGE_CONFERENCE
en ambas llamadas. Puedes verificar esto llamando al métodoCall.getDetails().getCallCapabilities()
. Si devuelveCAPABILITY_MERGE_CONFERENCE
, significa que la llamada se puede fusionar.En segundo lugar, necesitas poner la primera llamada en espera antes de fusionar la segunda llamada. Puedes hacer esto llamando al método
Call.hold()
.Por último, necesitas llamar al método
Call.conference()
en la segunda llamada y pasar la primera llamada como parámetro. Esto iniciará la llamada de conferencia.Aquí tienes un ejemplo de fragmento de código:
Aquí, verificamos si ambas llamadas tienen la capacidad
CAPABILITY_MERGE_CONFERENCE
. Si lo tienen, ponemos la primera llamada en espera, iniciamos la llamada de conferencia utilizando el métodoCall.conference()
de la segunda llamada y luego reanudamos la primera llamada.Ten en cuenta que esto es solo un ejemplo y es posible que necesites modificarlo para que se ajuste a tu caso de uso específico.