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 en la parte superior de 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
}
}
La aplicación escuchará ahora el evento de llamada entrante. El código anterior muestra los botones de responder y rechazar llamada cuando se recibe el evento de llamada entrante. Observa que estás almacenando callInviteID referencia para interactuar posteriormente 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 en 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 se mostrará.
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
}
Tenga en cuenta que después de rechazar o finalizar con éxito la llamada se establece onGoingCall a null.
Hacer una llamada de voz de aplicación a aplicación
Realiza una llamada de voz desde una aplicación Android a la misma aplicación Android instalada en otro dispositivo utilizando el SDK Android Client.