Skip to main content
Control audio during an active call session. These methods allow you to mute/unmute the local microphone and change the audio output device.

Prerequisites

Get CallSession Instance

All audio control methods are called on the CallSession singleton:
CallSession? callSession = CallSession.getInstance();
CallSession.getInstance() returns null if no active session exists. Always use the null-aware ?. operator when calling methods.

Mute Audio

Mute the local microphone. Other participants will no longer hear you.
await CallSession.getInstance()?.muteAudio();
When you mute your audio, the onAudioMuted() callback is triggered on your MediaEventsListener.

Unmute Audio

Unmute the local microphone to resume transmitting audio.
await CallSession.getInstance()?.unMuteAudio();
When you unmute your audio, the onAudioUnMuted() callback is triggered on your MediaEventsListener.

Toggle Mute Audio

Convenience method that toggles between muted and unmuted audio. It checks the current state and calls the appropriate action automatically.
await CallSession.getInstance()?.toggleMuteAudio();

Set Audio Mode

Change the audio output device during a call. This allows users to switch between speaker, earpiece, or Bluetooth.
// Switch to speaker
await CallSession.getInstance()?.setAudioModeType(AudioMode.speaker);

// Switch to earpiece
await CallSession.getInstance()?.setAudioModeType(AudioMode.earpiece);

// Switch to Bluetooth
await CallSession.getInstance()?.setAudioModeType(AudioMode.bluetooth);

AudioMode Enum

ValueDescription
AudioMode.speakerRoute audio through the device speaker
AudioMode.earpieceRoute audio through the phone earpiece
AudioMode.bluetoothRoute audio through a connected Bluetooth device
When the audio mode changes, the onAudioModeChanged(AudioMode) callback is triggered on your MediaEventsListener.

Check Audio Mute State

Use the isAudioMuted state getter to check whether the local microphone is currently muted.
bool? muted = CallSession.getInstance()?.isAudioMuted;
Return TypeDescription
bool?true if audio is muted, false otherwise, null if no active session

Listen for Audio Events

Register a MediaEventsListener to receive callbacks when audio state changes:
CallSession.getInstance()?.addMediaEventsListener(MediaEventsListener(
  onAudioMuted: () {
    debugPrint("Audio muted");
    // Update UI to show muted state
  },
  onAudioUnMuted: () {
    debugPrint("Audio unmuted");
    // Update UI to show unmuted state
  },
  onAudioModeChanged: (AudioMode audioMode) {
    debugPrint("Audio mode changed to: $audioMode");
    // Update UI to reflect new audio mode
  },
));
Flutter listeners are not lifecycle-aware. You must manually remove listeners in your widget’s dispose() method to prevent memory leaks.

Initial Audio Settings

You can configure the initial audio state when joining a session using SessionSettings:
SessionSettings sessionSettings = CometChatCalls.SessionSettingsBuilder()
    .startAudioMuted(true)                 // Start with microphone muted
    .setAudioMode(AudioMode.speaker)       // Start with speaker output
    .build();

Next Steps

Video Controls

Control video during calls

Media Events Listener

Handle all media events