这可以使用audio_session 包来实现:
final session = await AudioSession.instance;
await session.setActive(true);
在 iOS 上,这等同于激活 AVAudioSession,而在 Android 上,它等同于请求音频焦点。如果您想更具体地了解排他性/闪避行为,您可以根据自己的喜好配置音频会话(按照每个选项的每个平台文档):
final session = await AudioSession.instance;
await session.configure(AudioSessionConfiguration(
avAudioSessionCategory: AVAudioSessionCategory.playAndRecord,
avAudioSessionCategoryOptions: AVAudioSessionCategoryOptions.allowBluetooth,
avAudioSessionMode: AVAudioSessionMode.spokenAudio,
avAudioSessionRouteSharingPolicy: AVAudioSessionRouteSharingPolicy.defaultPolicy,
avAudioSessionSetActiveOptions: AVAudioSessionSetActiveOptions.none,
androidAudioAttributes: const AndroidAudioAttributes(
contentType: AndroidAudioContentType.speech,
flags: AndroidAudioFlags.none,
usage: AndroidAudioUsage.voiceCommunication,
),
androidAudioFocusGainType: AndroidAudioFocusGainType.gain,
androidWillPauseWhenDucked: true,
));
await session.setActive(true);
请注意,just_audio 插件在后台使用 audio_session 来在播放音频时停止或避开其他音频应用程序。