configureAudioSession method

  1. @override
Future<bool> configureAudioSession({
  1. Map<String, dynamic>? configuration,
})
override

Configures the audio session for optimal audio processing

This is primarily used on iOS to set up the audio session for recording and playback. On other platforms, this method may be a no-op.

configuration - Audio session configuration options

Returns true if configuration was successful.

Implementation

@override
Future<bool> configureAudioSession({
  Map<String, dynamic>? configuration,
}) async {
  try {
    final result = await methodChannel
        .invokeMethod<bool>('configureAudioSession', configuration ?? {})
        .timeout(const Duration(seconds: 10));

    return result ??
        true; // Default to success for platforms that don't need it
  } on PlatformException catch (e) {
    if (e.code == 'PLATFORM_NOT_SUPPORTED') {
      return true; // Audio session configuration is not needed on this platform
    }
    throw AudioAnalysisException(
      'Audio session configuration failed: ${e.message}',
      code: e.code,
      details: e.details?.toString(),
      originalError: e,
    );
  } catch (e) {
    throw AudioAnalysisException(
      'Audio session configuration failed: $e',
      originalError: e,
    );
  }
}