AudioSessionManager

actual object AudioSessionManager

Android implementation of AudioSessionManager.

Manages AudioFocus for coordinated player/recorder usage.

expect object AudioSessionManager

Cross-platform audio session manager.

Coordinates audio session/focus for player and recorder to work together. Platform implementations handle iOS AVAudioSession and Android AudioFocus.

Usage:

// Configure for singalong (playback + recording)
AudioSessionManager.configure(AudioMode.PLAY_AND_RECORD, echoCancellation = true)

// Listen for focus changes
AudioSessionManager.addFocusListener(object : AudioFocusListener {
override fun onFocusGained() { player.play() }
override fun onFocusLost(transient: Boolean) { player.pause() }
override fun onDuck() { player.setVolume(0.3f) }
})

// Deactivate when done
AudioSessionManager.deactivate()
actual object AudioSessionManager

iOS implementation of AudioSessionManager.

Manages AVAudioSession configuration for coordinated player/recorder usage.

Properties

Link copied to clipboard
actual val currentMode: AudioMode?
expect val currentMode: AudioMode?

Current active mode, or null if not configured.

actual val currentMode: AudioMode?
Link copied to clipboard

The hardware's preferred sample rate for audio recording.

Link copied to clipboard
actual val isActive: Boolean
expect val isActive: Boolean

Whether audio session is currently active.

actual val isActive: Boolean
Link copied to clipboard

AEC is not currently supported on Android for singing/music use cases.

Check if acoustic echo cancellation (AEC) is available on this device.

iOS always supports AEC through VoiceChat mode (all versions) or setPrefersEchoCancelledInput (iOS 18.2+).

Functions

Link copied to clipboard
actual fun addFocusListener(listener: AudioFocusListener)
expect fun addFocusListener(listener: AudioFocusListener)

Add listener for audio focus changes.

actual fun addFocusListener(listener: AudioFocusListener)
Link copied to clipboard
actual fun configure(mode: AudioMode, echoCancellation: Boolean): Boolean
expect fun configure(mode: AudioMode, echoCancellation: Boolean = false): Boolean

Configure audio session for the specified mode.

actual fun configure(mode: AudioMode, echoCancellation: Boolean): Boolean
Link copied to clipboard
actual fun deactivate()
expect fun deactivate()

Deactivate audio session and release focus.

actual fun deactivate()
Link copied to clipboard
actual fun getAudioSessionId(): Int
expect fun getAudioSessionId(): Int

Get the shared audio session ID for coordinating player and recorder.

actual fun getAudioSessionId(): Int
Link copied to clipboard

Remove focus listener.

actual fun removeFocusListener(listener: AudioFocusListener)