Finalizar una llamada
La llamada puede ser finalizada por una de las dos partes:
- llamando a la aplicación
hangupen elcallinstancia - callee colgando en el dispositivo físico
Finalizar la llamada cuando el interlocutor cuelga
Para finalizar la llamada (colgar) es necesario almacenar la referencia al objeto de llamada en curso. Añadir onGoingCall en la parte superior de MainActivity:
var onGoingCall: NexmoCall? = null
Es necesario almacenar la referencia de llamada en curso en el onGoingCall y añada addCallEventListener para avisarle cuando finalice la llamada. En el MainActivity actualizar el cuerpo del startCall método. Asegúrese de sustituir PHONE_NUMBER a continuación con el número de teléfono real al que desea llamar, en el campo E.164 (por ejemplo, 447700900000):
@SuppressLint("MissingPermission")
fun startCall() {
client.call("PHONE_NUMBER", NexmoCallHandler.SERVER, object : NexmoRequestListener<NexmoCall> {
override fun onSuccess(call: NexmoCall?) {
runOnUiThread {
hideUI()
endCallButton.visibility = View.VISIBLE
}
onGoingCall = call
onGoingCall?.addCallEventListener(object : NexmoCallEventListener {
override fun onMemberStatusUpdated(callStatus: NexmoCallMemberStatus, nexmoMember: NexmoMember) {
if (callStatus == NexmoCallMemberStatus.COMPLETED || callStatus == NexmoCallMemberStatus.CANCELLED) {
onGoingCall = null
runOnUiThread {
hideUI()
startCallButton.visibility = View.VISIBLE
}
}
}
override fun onMuteChanged(nexmoMediaActionState: NexmoMediaActionState, nexmoMember: NexmoMember) {}
override fun onEarmuffChanged(nexmoMediaActionState: NexmoMediaActionState, nexmoMember: NexmoMember) {}
override fun onDTMF(dtmf: String, nexmoMember: NexmoMember) {}
})
}
override fun onError(apiError: NexmoApiError) {
}
})
}
Cuando finaliza la llamada (independientemente de quién la finalice, la aplicación o el destinatario), la interfaz de usuario se actualiza para reflejar el estado actual de la llamada (make a call button se muestra y END CALL está oculto).
Finalizar la llamada en la aplicación
En el MainActivity rellenar el cuerpo del hangup método:
private fun hangup() {
onGoingCall?.hangup(object : NexmoRequestListener<NexmoCall> {
override fun onSuccess(call: NexmoCall?) {
onGoingCall = null
}
override fun onError(apiError: NexmoApiError) {
}
})
}
Observe que después de colgar con éxito se establece el valor de la opción onGoingCall a null.
Construir y ejecutar
Pulse el botón Ctrl + R para crear y ejecutar la aplicación. Inicia y finaliza la llamada para ver los cambios en la interfaz de usuario.
Hacer una llamada de voz dentro de la aplicación
Realiza una llamada de voz desde una aplicación web a un teléfono utilizando el SDK Client de Android.