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.
Sprachanruf von Anwendung zu Anwendung
Tätigen Sie einen Sprachanruf von einer Android-App zu derselben Android-App, die auf einem anderen Gerät installiert ist, indem Sie das Android Client SDK verwenden.