Kotlin

Recibir llamada

Antes de realizar una llamada, vamos a añadir a la aplicación la posibilidad de recibir llamadas. Añadir onGoingCallID y callInviteID propiedades situadas en la parte superior de la MainActivity clase:

private var onGoingCallID: CallId? = null
private var callInviteID: CallId? = null

Para escuchar las llamadas entrantes añada incoming call listener al final de onCreate método inside MainActivity clase:

client.setCallInviteListener { callId, from, channelType ->
    callInviteID = callId
    runOnUiThread {
        hideUI()
        answerCallButton.visibility = View.VISIBLE
        rejectCallButton.visibility = View.VISIBLE
    }
}

Ahora la aplicación esperará a que se produzca el evento de llamada entrante. El código anterior muestra los botones para contestar y rechazar la llamada cuando se recibe el evento de llamada entrante. Fíjate en que estás almacenando callInviteID referencia para interactuar más adelante con la llamada.

Antes de que puedas realizar acciones usando UI también necesitas añadir listeners a los botones. Añade este código en el onCreate dentro MainActivity clase:

answerCallButton.setOnClickListener { answerCall() }
rejectCallButton.setOnClickListener { rejectCall() }
endCallButton.setOnClickListener { endCall() }

Para responder a la llamada, añada answerCall método inside MainActivity clase:

@SuppressLint("MissingPermission")
private fun answerCall() {
    callInviteID?.let {
        client.answer(it) {
            err ->
            when {
                err != null -> {
                    connectionStatusTextView.text = err.localizedMessage
                }
                else -> {
                    onGoingCallID = it
                    hideUI()
                    endCallButton.visibility = View.VISIBLE
                }
            }
        }
    }
}

Tras responder a la llamada, el end call Aparecerá el botón.

NOTA: En SuppressLint se utiliza por simplicidad. En la aplicación de producción debes asegurarte de que se conceden los permisos antes de responder a la llamada.

Para rechazar la llamada añada rejectCall método inside MainActivity clase:

private fun rejectCall() {
    callInviteID?.let {
        client.reject(it) { err ->
            when {
                err != null -> {
                    connectionStatusTextView.text = err.localizedMessage
                }
                else -> {
                    hideUI()
                    startCallButton.visibility = View.VISIBLE
                    waitingForIncomingCallTextView.visibility = View.VISIBLE
                }
            }
        }
        onGoingCallID = null
    }
}

Para finalizar la llamada añada endCall método inside MainActivity clase:

private fun endCall() {
    onGoingCallID?.let {
        client.hangup(it) {
            err ->
            when {
                err != null -> {
                    connectionStatusTextView.text = err.localizedMessage
                }
                else -> {
                    hideUI()
                    startCallButton.visibility = View.VISIBLE
                    waitingForIncomingCallTextView.visibility = View.VISIBLE
                }
            }
        }
    }
    onGoingCallID = null
}

Ten en cuenta que, tras rechazar o finalizar correctamente la llamada, debes establecer onGoingCall restablecer el valor de la propiedad a «null».

Realizar una llamada de voz de aplicación a aplicación

Realiza una llamada de voz desde una aplicación de Android a la misma aplicación de Android instalada en otro dispositivo utilizando el Client SDK de Android.

Pasos
1
Introducción a esta tarea
2
Prerequisites
3
Crear un servidor webhook
4
Crear una aplicación de Vonage
5
Crear los usuarios
6
Generar JWT
7
Crear un proyecto Android
8
Añadir permisos
9
Construir pantalla principal
10
Inicializar el cliente
11
Recibir llamada
12
Hacer una llamada
13
¿Y ahora qué?