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

Flutter使用just_audio播放URL音频,真机后台停止问题求助

解决Flutter just_audio真机播放URL音频中途停止的问题

1. 配置后台播放权限

真机系统会限制后台音频播放,需添加对应权限配置:

  • Android:在AndroidManifest.xml中加入权限
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    
    播放时启动前台服务,避免系统回收进程。可配合audio_service库(与just_audio兼容)实现,或手动创建前台服务将音频播放设为前台状态。
  • iOS:在Info.plist中添加后台模式权限
    <key>UIBackgroundModes</key>
    <array>
        <string>audio</string>
    </array>
    
    开启音频后台模式,让系统允许APP在后台持续播放。

2. 优化音频缓存策略

远程URL播放时,网络波动或缓存不足可能导致中断,调整just_audio的缓存设置:

final player = AudioPlayer();
await player.setUrl(
  'your_audio_url',
  cacheEnable: true,
  cacheMaxSize: 100 * 1024 * 1024, // 设置更大缓存空间,比如100MB
);

若音频文件较大,建议用AudioSource.uri配合缓存配置,避免缓存不足引发播放中断。

3. 添加错误监听与重试机制

真机环境网络易不稳定,捕获播放错误并实现自动重试:

player.playbackEventStream.listen((event) {
  if (event.processingState == ProcessingState.error) {
    // 捕获错误后重新加载播放
    player.setUrl('your_audio_url').then((_) {
      player.play();
    });
  }
});

同时可监听网络状态变化,在网络恢复后重新触发播放。

4. 深度禁用电池优化

部分安卓机型仅关闭省电模式不够,需单独为APP禁用电池优化:

  • 进入手机设置→电池→电池优化→找到你的APP→选择「不优化」
  • 小米、华为等品牌机型需将APP加入后台活动白名单,允许后台持续运行。

5. 规范音频生命周期管理

确保APP生命周期变化时正确处理播放状态:

  • 若需要后台播放,APP进入后台时不要暂停播放,保持播放并维持前台服务状态。
  • 使用WidgetsBindingObserver监听生命周期,在didChangeAppLifecycleState中处理逻辑:
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
  if (state == AppLifecycleState.resumed) {
    // 恢复之前因后台被暂停的播放
    player.play();
  } else if (state == AppLifecycleState.paused) {
    // 需后台播放则注释暂停代码
    // player.pause();
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 18:29:58