Audio Session Manager
Android implementation of AudioSessionManager.
Manages AudioFocus for coordinated player/recorder usage.
Cross-platform audio session manager (ADR-016).
Coordinates audio session/focus for player and recorder to work together. Without coordination, iOS AVAudioSession and Android AudioFocus race conditions cause silent playback or dropped recordings.
Quick Start
Kotlin
AudioSessionManager.configure(AudioMode.PLAY_AND_RECORD, echoCancellation = true)
AudioSessionManager.addFocusListener(object : AudioFocusListener {
override fun onFocusGained() { player.play() }
override fun onFocusLost(transient: Boolean) { player.pause() }
override fun onDuck() { player.setVolume(0.3f) }
})
AudioSessionManager.deactivate()Swift
AudioSessionManager.configure(mode: .playAndRecord, echoCancellation: true)
// On iOS, also exposes hardwareSampleRate for ADR-017 passthrough
let hwRate = AudioSessionManager.hardwareSampleRateSee also
Uses AudioSessionManager for playback session
Uses AudioSessionManager for recording session
Playback / Recording / PlayAndRecord modes
iOS implementation of AudioSessionManager.
Manages AVAudioSession configuration for coordinated player/recorder usage.
Desktop-JVM audio session manager. The desktop OS audio stack has no app-level audio-session/focus concept (that's a mobile notion, ADR-016), so there is no session to race: configure just records the mode and reports active. Focus listeners are tracked for contract parity but never fire (no system focus events on desktop). System AEC and shared session ids are mobile-only.
Properties
Current active mode, or null if not configured.
The hardware's preferred sample rate for audio recording.
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
Add listener for audio focus changes.
Configure audio session for the specified mode.
Deactivate audio session and release focus.
Get the shared audio session ID for coordinating player and recorder.
Remove focus listener.