initialize static method

Future<void> initialize({
  1. bool bypassVoiceProcessing = false,
  2. AudioSessionOptions? initialAudioSessionOptions,
})

Initialize the WebRTC plugin.

Optional: call once at startup to enable bypassVoiceProcessing before connecting, or to apply Android initialAudioSessionOptions before WebRTC creates its audio device module. Otherwise WebRTC initializes lazily with defaults.

LiveKit owns the platform audio session, and flutter_webrtc's own native audio management is disabled automatically when the LiveKit plugin loads (done natively at registration), so that does not depend on this call.

Configure explicit runtime audio-session behavior through AudioManager before connecting, e.g. await AudioManager.instance.setAudioSessionManagementMode(...) and await AudioManager.instance.setAudioSessionOptions(...).

initialAudioSessionOptions currently affects Android's WebRTC initialization-time playout attributes, such as media vs voice communication usage. It also seeds AudioManager's initial automatic runtime session policy until the app explicitly replaces it with AudioManager.setAudioSessionOptions. A future SDK/WebRTC integration may make those Android playout attributes runtime-updatable; for now, pass them here before WebRTC initializes.

Implementation

static Future<void> initialize({
  bool bypassVoiceProcessing = false,
  AudioSessionOptions? initialAudioSessionOptions,
}) async {
  if (lkPlatformIsMobile()) {
    // bypassVoiceProcessing controls only WebRTC voice processing. Android
    // playout attributes are passed here because WebRTC reads them when it
    // creates the audio device module.
    Native.bypassVoiceProcessing = bypassVoiceProcessing;
    await rtc.WebRTC.initialize(
      options: liveKitWebRTCInitializeOptions(
        bypassVoiceProcessing: bypassVoiceProcessing,
        initialAudioSessionOptions: initialAudioSessionOptions,
        includeAndroidAudioConfiguration: lkPlatformIs(PlatformType.android),
      ),
    );
    if (lkPlatformIs(PlatformType.android) && initialAudioSessionOptions != null) {
      AudioManager.instance.setInitialAudioSessionOptions(initialAudioSessionOptions);
    }
  }
}