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

iOS取下AirPods时Flutter应用(Assets audio player)音频暂停,求解决办法

解决iOS AirPods移除导致音频暂停且无法恢复的问题

核心思路

iOS默认音频会话策略会在耳机断开时自动暂停音频,要绕过这个行为,需手动配置音频会话类别,并监听路由事件主动控制播放状态。


步骤1:添加依赖并配置音频会话

首先引入audio_session包管理iOS音频会话,在pubspec.yaml中添加:

dependencies:
  audio_session: ^0.1.14

在应用初始化阶段(比如main函数内)配置会话:

import 'package:audio_session/audio_session.dart';

Future<void> setupAudioSession() async {
  final session = await AudioSession.instance;
  await session.configure(AudioSessionConfiguration(
    // 设置为播放类别,支持后台播放
    avAudioSessionCategory: AVAudioSessionCategory.playback,
    // 允许与其他音频混合、支持蓝牙设备
    avAudioSessionCategoryOptions: AVAudioSessionCategoryOptions.mixWithOthers | AVAudioSessionCategoryOptions.allowBluetooth,
    avAudioSessionMode: AVAudioSessionMode.defaultMode,
  ));

  // 监听"即将嘈杂"事件(耳机断开时触发),强制继续播放
  session.becomingNoisyEvent.listen((_) {
    assetsAudioPlayer.play();
  });
}

步骤2:配置Assets Audio Player

初始化播放器时开启后台播放权限:

import 'package:assets_audio_player/assets_audio_player.dart';

final assetsAudioPlayer = AssetsAudioPlayer();

// 先初始化音频会话,再加载音频
await setupAudioSession();

await assetsAudioPlayer.open(
  Audio("assets/your_bg_audio.mp3"),
  loopMode: LoopMode.single, // 根据需求设置循环模式
  playInBackground: PlayInBackground.enabled,
  playWhenNotFocused: true, // 应用失焦时仍可播放
);

步骤3:处理耳机重连自动恢复

若需重新戴上AirPods时自动恢复播放,监听路由变化事件:

AudioSession.instance.then((session) {
  session.routeChangeEvent.listen((event) {
    // 检测到路由切换回耳机,且当前音频暂停时恢复播放
    if (event.route.name.contains('Headphones') && assetsAudioPlayer.isPaused.value) {
      assetsAudioPlayer.play();
    }
  });
});

步骤4:iOS权限配置

在Info.plist中添加后台音频权限,确保应用后台也能持续播放:

<key>UIBackgroundModes</key>
<array>
  <string>audio</string>
</array>

关键说明

  • AVAudioSessionCategory.playback是核心:该类别告知iOS应用音频为主动播放内容,而非辅助音效,不会在耳机断开时自动暂停
  • becomingNoisyEvent事件:iOS在耳机断开时触发此事件,直接调用play()即可阻止音频暂停
  • 路由监听:通过检测路由切换回耳机的事件,可实现自动恢复播放的逻辑

内容的提问来源于stack exchange,提问作者An Tran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:55:34