使用audioplayers时iOS无线耳机音频输出异常求助
iOS AirPods 音频输出不切换问题的解决方案
你的问题出在iOS音频会话配置的几个关键设置上,调整以下几点即可解决:
更换音频会话类别
你当前使用的AVAudioSessionCategory.soloAmbient不适合持续媒体播放场景——它会在静音触发时暂停播放,且defaultToSpeaker设置会强制音频输出到扬声器,覆盖系统自动路由逻辑。改用AVAudioSessionCategory.playback,这是专为音乐/媒体播放设计的类别,支持自动切换音频输出设备(包括AirPods),且不受静音键影响。移除强制扬声器的配置
你同时在AudioContextIOS的defaultToSpeaker属性和options数组中添加了AVAudioSessionOptions.defaultToSpeaker,这会强制音频始终从扬声器输出,直接忽略AirPods的连接状态,必须移除这两项设置。保留蓝牙支持选项
保留AVAudioSessionOptions.allowBluetoothA2DP即可确保支持AirPods这类立体声蓝牙音频设备。
修改后的配置代码:
AudioPlayer controller = AudioPlayer(); final audioContext = AudioContext( android: AudioContextAndroid( audioFocus: AndroidAudioFocus.gain, isSpeakerphoneOn: true, contentType: AndroidContentType.music, usageType: AndroidUsageType.media, stayAwake: true, ), iOS: AudioContextIOS( category: AVAudioSessionCategory.playback, options: [ AVAudioSessionOptions.allowBluetoothA2DP, // 可选:如果需要支持AirPlay,可添加 AVAudioSessionOptions.allowAirPlay ], ), ); controller.setAudioContext(audioContext);
额外建议:
- 确保播放音频前音频会话已正确激活。虽然
audioplayers通常会自动处理,但如果仍有问题,可尝试在播放前调用controller.resume()(若之前暂停过),或检查是否有其他代码干扰了音频会话状态。 - 测试前先断开并重新连接AirPods,确保系统已正确识别设备连接状态。
内容的提问来源于stack exchange,提问作者fisc003
相关产品推荐
相关产品推荐

