SerenadaSession

Represents an active call session. Created via SerenadaCore.join or SerenadaCore.createRoom.

Observe state for app-facing call state changes and diagnostics for low-level transport/media details. Control the call via leave, end, toggleAudio, toggleVideo, etc. Call close once the host is done with the session object.

Properties

Link copied to clipboard
val availableAudioDevices: <Error class: unknown class><List<AudioDevice>>

Audio routes currently published by the active coordinator.

Link copied to clipboard
val currentAudioDevice: <Error class: unknown class><AudioDevice?>

Current selected or active output route, or null when no route is available yet.

Link copied to clipboard
val diagnostics: <Error class: unknown class><CallDiagnostics>

Real-time connection diagnostics (stats, transport state, ICE state).

Link copied to clipboard
val host: String?
Link copied to clipboard
val isMicMuted: <Error class: unknown class><Boolean>

Whether the microphone is effectively muted by user action, external audio, or missing input.

Link copied to clipboard
val isMicMutedByExternalAudio: <Error class: unknown class><Boolean>

Whether the microphone is muted specifically because external audio, such as push-to-talk, is active.

Link copied to clipboard

Callback invoked when camera/microphone permissions are needed before joining.

Link copied to clipboard

Aggregate call-quality summary. Reflects the live tracker while in-call and the finalized snapshot after the call ends; stays readable after teardown. Null before sampling begins (first InCall).

Link copied to clipboard

The room ID for this call session.

Link copied to clipboard

Full URL for this call session (e.g. "https://serenada.app/call/ABC123").

Link copied to clipboard
val state: <Error class: unknown class><CallState>

Primary observable call state. Collect this flow for UI updates.

Functions

Link copied to clipboard
fun adjustLocalCameraZoom(scaleFactor: Float)

Adjust the camera zoom level by the given scale factor.

Link copied to clipboard
fun attachLocalContentRenderer(renderer: <Error class: unknown class>)

Attach a sink to the LOCAL content (screen share) track for local preview.

Link copied to clipboard
fun attachLocalRenderer(renderer: <Error class: unknown class>, rendererEvents: <Error class: unknown class>? = null)

Attach a org.webrtc.SurfaceViewRenderer for local video preview.

Link copied to clipboard
fun attachLocalSink(sink: <Error class: unknown class>)
Link copied to clipboard
fun attachRemoteContentRenderer(renderer: <Error class: unknown class>, participantCid: String)

Attach a sink to a specific peer's remote CONTENT (screen share) track.

Link copied to clipboard
fun attachRemoteRenderer(renderer: <Error class: unknown class>, rendererEvents: <Error class: unknown class>? = null)

Attach a org.webrtc.SurfaceViewRenderer for remote video.

Link copied to clipboard
fun attachRemoteRendererForCid(cid: String, renderer: <Error class: unknown class>, rendererEvents: <Error class: unknown class>? = null)
Link copied to clipboard
fun attachRemoteSink(sink: <Error class: unknown class>)
Link copied to clipboard
fun attachRemoteSinkForCid(cid: String, sink: <Error class: unknown class>)
Link copied to clipboard

Cancel an in-progress join attempt.

Link copied to clipboard
fun captureLocalSnapshot(onResult: (ByteArray?) -> Unit)

Capture a JPEG snapshot of the local video frame.

Link copied to clipboard
suspend fun captureSnapshot(source: SnapshotSource = SnapshotSource.Local): SnapshotResult

Capture the current video frame from the chosen stream as JPEG bytes at the source track's full intrinsic resolution.

Link copied to clipboard
fun close()

Permanently release this session after the host is done with it.

Link copied to clipboard
fun detachLocalContentRenderer(renderer: <Error class: unknown class>)

Detach a previously attached local content renderer.

Link copied to clipboard
fun detachLocalRenderer(renderer: <Error class: unknown class>)

Detach a previously attached local video renderer.

Link copied to clipboard
fun detachLocalSink(sink: <Error class: unknown class>)
Link copied to clipboard
fun detachRemoteContentRenderer(renderer: <Error class: unknown class>, participantCid: String)

Detach a previously attached remote content renderer for a peer.

Link copied to clipboard
fun detachRemoteRenderer(renderer: <Error class: unknown class>)

Detach a previously attached remote video renderer.

Link copied to clipboard
fun detachRemoteRendererForCid(cid: String, renderer: <Error class: unknown class>)
Link copied to clipboard
fun detachRemoteSink(sink: <Error class: unknown class>)
Link copied to clipboard
fun detachRemoteSinkForCid(cid: String, sink: <Error class: unknown class>)
Link copied to clipboard
fun eglContext(): <Error class: unknown class>

Get the EGL context for custom rendering or renderer initialization.

Link copied to clipboard
fun end()

End the call for all participants.

Link copied to clipboard

Cycle to the next camera mode in the configured preference order.

Link copied to clipboard
fun leave()

Leave the call gracefully. The other participant stays in the room.

Link copied to clipboard

Resume joining after camera/microphone permissions have been granted.

Link copied to clipboard

Request routing to a coordinator-published audio device.

Link copied to clipboard

Set a specific camera mode. Ignored when mode is not in the configured list.

Link copied to clipboard
fun setMicMuted(muted: Boolean)

Set the user-requested microphone mute state.

Link copied to clipboard
fun startScreenShare(intent: <Error class: unknown class>)

Start screen sharing using the given media projection intent.

Link copied to clipboard

Stop screen sharing and return to camera.

Link copied to clipboard

Toggle local audio on or off.

Link copied to clipboard

Toggle the device flashlight on or off.

Link copied to clipboard

Toggle local video on or off.