Skip to main content
Version: 3.x.x

Media Events - Android

These ParticipantEventListener events tell you about a participant's media. Override the ones you need and register the listener with participant.addEventListener().

onStreamEnabled​

  • This event is triggered whenever a participant's video, audio or screen share stream is enabled.
  • When you add the listener, this event also fires straight away, on the calling thread, for every stream the participant already has. Don't also loop over participant.streams to render them, or each stream is handled twice.

onStreamDisabled​

  • This event is triggered whenever a participant's video, audio or screen share stream is disabled.

onMediaStatusChanged​

  • This event is triggered whenever a participant turns their mic, webcam or screen share on or off, even when this device does not receive that media.
  • It passes the participantId, the kind of media (a MediaType: AUDIO, VIDEO, SHARE or SHARE_AUDIO) and newStatus, which is true when the media was turned on.
  • onStreamEnabled fires only for media this device receives. In a room created with createRoom(autoConsume = false), use this event as the cue to call consumeMicStreams() or consumeWebcamStreams().

Stream state​

  • To follow the health of a remote video or screen share stream, call setOnStreamStateChangedListener() on the RTCStream that onStreamEnabled delivers. The listener is called on the main thread with a StreamState:
    • FREEZE_DETECTED: the picture has stopped moving. FREEZE_RESOLVED follows once frames have flowed again for five seconds.
    • STUCK: nothing has arrived on the stream for five seconds.
    • ACTIVE / ENDED: the server resumed or closed the stream.
  • Only remote video and screen share streams report a state. Audio streams never do.
  • A stream that is enabled again is a new RTCStream, so set the listener in every onStreamEnabled. Pass null to remove it.

Example​

Here is the usage of all the events mentioned in this page.

participant.addEventListener(object : ParticipantEventListener() {
override fun onStreamEnabled(stream: RTCStream) {
Log.d("VideoSDK", "onStreamEnabled $stream")
stream.setOnStreamStateChangedListener { state ->
Log.d("VideoSDK", "${stream.kind} stream of ${stream.participantId}: $state")
}
}

override fun onStreamDisabled(stream: RTCStream) {
Log.d("VideoSDK", "onStreamDisabled $stream")
}

override fun onMediaStatusChanged(participantId: String, kind: MediaType, newStatus: Boolean) {
Log.d("VideoSDK", "onMediaStatusChanged $participantId $kind $newStatus")
}
})

API Reference​

The API references for all the methods and events utilised in this guide are provided below.

Got a Question? Ask us on discord