Control the call session lifecycle and participant interactions. These methods allow you to leave the session, raise/lower your hand, and check session status.
End your participation in the current call session.
Kotlin
Java
Report incorrect code
Copy
Ask AI
callSession.leaveSession()
Report incorrect code
Copy
Ask AI
callSession.leaveSession();
When you leave the session, the onSessionLeft() callback is triggered on your SessionStatusListener. Other participants will receive the onParticipantLeft(Participant) callback.
callSession.addSessionStatusListener(this, object : SessionStatusListener { override fun onSessionLeft() { Log.d(TAG, "Successfully left the session") // Navigate away from call screen finish() } override fun onSessionJoined() {} override fun onSessionTimedOut() {} override fun onConnectionLost() {} override fun onConnectionRestored() {} override fun onConnectionClosed() {}})
Report incorrect code
Copy
Ask AI
callSession.addSessionStatusListener(this, new SessionStatusListener() { @Override public void onSessionLeft() { Log.d(TAG, "Successfully left the session"); // Navigate away from call screen finish(); } @Override public void onSessionJoined() {} @Override public void onSessionTimedOut() {} @Override public void onConnectionLost() {} @Override public void onConnectionRestored() {} @Override public void onConnectionClosed() {}});
Register a ParticipantEventListener to receive callbacks when participants raise or lower their hands:
Kotlin
Java
Report incorrect code
Copy
Ask AI
callSession.addParticipantEventListener(this, object : ParticipantEventListener { override fun onParticipantHandRaised(participant: Participant) { Log.d(TAG, "${participant.name} raised their hand") // Show hand raised indicator in UI } override fun onParticipantHandLowered(participant: Participant) { Log.d(TAG, "${participant.name} lowered their hand") // Hide hand raised indicator in UI } // Other callbacks... override fun onParticipantJoined(participant: Participant) {} override fun onParticipantLeft(participant: Participant) {} override fun onParticipantAudioMuted(participant: Participant) {} override fun onParticipantAudioUnmuted(participant: Participant) {} override fun onParticipantVideoPaused(participant: Participant) {} override fun onParticipantVideoResumed(participant: Participant) {} override fun onParticipantStartedScreenShare(participant: Participant) {} override fun onParticipantStoppedScreenShare(participant: Participant) {} override fun onParticipantStartedRecording(participant: Participant) {} override fun onParticipantStoppedRecording(participant: Participant) {} override fun onDominantSpeakerChanged(participant: Participant) {} override fun onParticipantListChanged(participants: List<Participant>) {}})
Report incorrect code
Copy
Ask AI
callSession.addParticipantEventListener(this, new ParticipantEventListener() { @Override public void onParticipantHandRaised(Participant participant) { Log.d(TAG, participant.getName() + " raised their hand"); // Show hand raised indicator in UI } @Override public void onParticipantHandLowered(Participant participant) { Log.d(TAG, participant.getName() + " lowered their hand"); // Hide hand raised indicator in UI } // Other callbacks... @Override public void onParticipantJoined(Participant participant) {} @Override public void onParticipantLeft(Participant participant) {} @Override public void onParticipantAudioMuted(Participant participant) {} @Override public void onParticipantAudioUnmuted(Participant participant) {} @Override public void onParticipantVideoPaused(Participant participant) {} @Override public void onParticipantVideoResumed(Participant participant) {} @Override public void onParticipantStartedScreenShare(Participant participant) {} @Override public void onParticipantStoppedScreenShare(Participant participant) {} @Override public void onParticipantStartedRecording(Participant participant) {} @Override public void onParticipantStoppedRecording(Participant participant) {} @Override public void onDominantSpeakerChanged(Participant participant) {} @Override public void onParticipantListChanged(List<Participant> participants) {}});
Listen for when users tap the leave or raise hand buttons:
Kotlin
Java
Report incorrect code
Copy
Ask AI
callSession.addButtonClickListener(this, object : ButtonClickListener { override fun onLeaveSessionButtonClicked() { Log.d(TAG, "Leave button clicked") // Optionally show confirmation dialog before leaving } override fun onRaiseHandButtonClicked() { Log.d(TAG, "Raise hand button clicked") // Handle custom raise hand logic if needed } // Other callbacks... override fun onShareInviteButtonClicked() {} override fun onChangeLayoutButtonClicked() {} override fun onParticipantListButtonClicked() {} override fun onToggleAudioButtonClicked() {} override fun onToggleVideoButtonClicked() {} override fun onSwitchCameraButtonClicked() {} override fun onChatButtonClicked() {} override fun onRecordingToggleButtonClicked() {}})
Report incorrect code
Copy
Ask AI
callSession.addButtonClickListener(this, new ButtonClickListener() { @Override public void onLeaveSessionButtonClicked() { Log.d(TAG, "Leave button clicked"); // Optionally show confirmation dialog before leaving } @Override public void onRaiseHandButtonClicked() { Log.d(TAG, "Raise hand button clicked"); // Handle custom raise hand logic if needed } // Other callbacks... @Override public void onShareInviteButtonClicked() {} @Override public void onChangeLayoutButtonClicked() {} @Override public void onParticipantListButtonClicked() {} @Override public void onToggleAudioButtonClicked() {} @Override public void onToggleVideoButtonClicked() {} @Override public void onSwitchCameraButtonClicked() {} @Override public void onChatButtonClicked() {} @Override public void onRecordingToggleButtonClicked() {}});
When the timeout is reached, the onSessionTimedOut() callback is triggered:
Kotlin
Java
Report incorrect code
Copy
Ask AI
callSession.addSessionStatusListener(this, object : SessionStatusListener { override fun onSessionTimedOut() { Log.d(TAG, "Session timed out due to inactivity") // Handle timeout - navigate away from call screen finish() } override fun onSessionJoined() {} override fun onSessionLeft() {} override fun onConnectionLost() {} override fun onConnectionRestored() {} override fun onConnectionClosed() {}})
Report incorrect code
Copy
Ask AI
callSession.addSessionStatusListener(this, new SessionStatusListener() { @Override public void onSessionTimedOut() { Log.d(TAG, "Session timed out due to inactivity"); // Handle timeout - navigate away from call screen finish(); } @Override public void onSessionJoined() {} @Override public void onSessionLeft() {} @Override public void onConnectionLost() {} @Override public void onConnectionRestored() {} @Override public void onConnectionClosed() {}});