Kotlin

Anruf entgegennehmen

Bevor Sie einen Anruf tätigen, fügen Sie der Anwendung die Möglichkeit hinzu, einen Anruf zu empfangen. hinzufügen onGoingCallID und callInviteID Eigenschaften am Anfang der MainActivity Klasse:

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

Um auf eingehende Anrufe zu achten, fügen Sie incoming call listener am Ende von onCreate innere Methode MainActivity Klasse:

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

Die App wartet nun auf das Ereignis eines eingehenden Anrufs. Der obige Code zeigt die Schaltflächen zum Annehmen und Ablehnen eines Anrufs, wenn das Ereignis "Eingehender Anruf" empfangen wird. Beachten Sie, dass Sie Folgendes speichern callInviteID Referenz, um später mit dem Anruf zu interagieren.

Bevor Sie Aktionen über die Benutzeroberfläche ausführen können, müssen Sie den Schaltflächen Hörer hinzufügen. Fügen Sie diesen Code in der onCreate innerhalb MainActivity Klasse:

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

Um den Anruf entgegenzunehmen, fügen Sie answerCall innere Methode MainActivity Klasse:

@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
                }
            }
        }
    }
}

Nach Beantwortung des Anrufs wird die end call wird angezeigt.

HINWEIS: Die SuppressLint Anmerkung wird der Einfachheit halber verwendet. In der Produktionsanwendung sollten Sie sicherstellen, dass die Berechtigungen gewährt werden, bevor Sie den Anruf beantworten.

Zum Abweisen des Anrufs fügen Sie rejectCall innere Methode MainActivity Klasse:

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
    }
}

Um den Anruf zu beenden, fügen Sie endCall innere Methode MainActivity Klasse:

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
}

Beachten Sie, dass Sie nach erfolgreichem Ablehnen oder Beenden des Anrufs die onGoingCall Eigenschaftswert auf Null zurück.