MultimediaClient
The primary interface for managing voice sessions within a conversation.
MultimediaClient orchestrates the lifecycle of MultimediaSession instances, providing both imperative access via currentSession and reactive observation via currentSessionFlow. It also acts as a factory for creating or joining sessions through the inherited MultimediaSessionFactory methods.
Obtaining an instance
Retrieve a MultimediaClient from CoreClient.multimediaClient(). This returns null if multimedia was not enabled at configuration time. To enable it, pass MultimediaExtension as the multimediaExtension parameter when creating a CoreConfiguration.
Starting a voice call
Voice calls are initiated via ConversationClient.changeModality(Modality.Voice), which triggers the backend to create a modality connection. The SDK then automatically creates a MultimediaSession observable through currentSessionFlow. Call MultimediaSession.join() to connect audio.
Permissions
Voice calls require the RECORD_AUDIO permission at minimum. On Android 12+ (API 31), BLUETOOTH_CONNECT is also needed for Bluetooth audio routing. On Android 13+ (API 33), POST_NOTIFICATIONS is required for the foreground service notification. Request these permissions before calling changeModality.
Requirements
Android O (API 26) or higher.
The
multimedia:coremodule must be included as a dependency.MultimediaExtensionmust be provided in the configuration.
See also
Samples
scope.launch {
multimediaClient.currentSessionFlow
.filterNotNull()
.collect { session ->
// Session became active; show call UI
}
}Properties
The current MultimediaConfiguration controlling display name and notification behavior.
The current MultimediaSession, or null if no session is active.
A StateFlow of the current MultimediaSession, or null if no session is active.
Functions
Applies configuration changes to this client.
Creates a new multimedia session for the given conversation.
Joins an existing multimedia session for the given conversation.