initialize static method
- bool bypassVoiceProcessing = false,
- 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);
}
}
}