| name | audio-controls |
| description | Control audio during calls — mute/unmute microphone, switch audio output device (speaker, earpiece, bluetooth). Use when implementing audio toggle, audio mode switching, or custom mute buttons. Triggers on "mute audio", "unmute", "audio mode", "speaker", "earpiece", "bluetooth audio". |
| inclusion | manual |
CometChat Calls SDK v5 — Audio Controls
Overview
Programmatically control the local microphone (mute/unmute) and audio output device (speaker, earpiece, Bluetooth, headphones) during an active call.
Key Imports
import com.cometchat.calls.core.CallSession
import com.cometchat.calls.model.AudioMode
import com.cometchat.calls.listeners.MediaEventsListener
Implementation
Mute / Unmute
val callSession = CallSession.getInstance()
callSession.muteAudio()
callSession.unmuteAudio()
Switch Audio Output
callSession.setAudioMode(AudioMode.SPEAKER)
callSession.setAudioMode(AudioMode.EARPIECE)
callSession.setAudioMode(AudioMode.BLUETOOTH)
callSession.setAudioMode(AudioMode.HEADPHONES)
Listen for Audio Events
callSession.addMediaEventsListener(this, object : MediaEventsListener() {
override fun onAudioMuted() {
}
override fun onAudioUnMuted() {
}
override fun onAudioModeChanged(audioMode: AudioMode) {
when (audioMode) {
AudioMode.SPEAKER -> { }
AudioMode.EARPIECE -> { }
AudioMode.BLUETOOTH -> { }
AudioMode.HEADPHONES -> { }
}
}
override fun onVideoPaused() {}
override fun onVideoResumed() {}
override fun onRecordingStarted() {}
override fun onRecordingStopped() {}
override fun onCameraFacingChanged(facing: CameraFacing) {}
})
Initial Audio Settings (Pre-Session)
val sessionSettings = CometChatCalls.SessionSettingsBuilder()
.startAudioMuted(true)
.setAudioMode(AudioMode.SPEAKER)
.hideToggleAudioButton(false)
.hideAudioModeButton(false)
.build()
Gotchas
muteAudio() / unmuteAudio() only work during an active session
- Audio mode changes trigger
onAudioModeChanged() on MediaEventsListener
AudioMode enum: SPEAKER, EARPIECE, BLUETOOTH, HEADPHONES
- For voice calls, default to
AudioMode.EARPIECE; for video calls, default to AudioMode.SPEAKER
- Bluetooth audio mode only works when a Bluetooth device is connected
Sample App Reference
CallActivity.kt — Sets AudioMode.EARPIECE for voice calls, AudioMode.SPEAKER for video calls