You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用audioplayers时iOS无线耳机音频输出异常求助

iOS AirPods 音频输出不切换问题的解决方案

你的问题出在iOS音频会话配置的几个关键设置上,调整以下几点即可解决:

  1. 更换音频会话类别
    你当前使用的AVAudioSessionCategory.soloAmbient不适合持续媒体播放场景——它会在静音触发时暂停播放,且defaultToSpeaker设置会强制音频输出到扬声器,覆盖系统自动路由逻辑。改用AVAudioSessionCategory.playback,这是专为音乐/媒体播放设计的类别,支持自动切换音频输出设备(包括AirPods),且不受静音键影响。

  2. 移除强制扬声器的配置
    你同时在AudioContextIOS的defaultToSpeaker属性和options数组中添加了AVAudioSessionOptions.defaultToSpeaker,这会强制音频始终从扬声器输出,直接忽略AirPods的连接状态,必须移除这两项设置。

  3. 保留蓝牙支持选项
    保留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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 21:30:50