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

Flutter中使用just_audio_background结合Workmanager无法后台播放本地音频

后台播放本地音频失败(Workmanager触发场景)

我无法在后台播放本地音频。我使用Workmanager定期运行任务,需要时播放声音——也就是直接从后台启动音频,和多数先通过点击播放按钮启动再切后台的示例不同。遗憾的是音频无法播放,我已参照官方示例代码,仅差异在于使用Workmanager。

import 'package:flutter/material.dart';
import 'package:just_audio/just_audio.dart';
import 'package:just_audio_background/just_audio_background.dart';

class AudioPlayerService {
  static const audioFilePath = 'assets/audio/notification.wav';
  final _playList = AudioSource.uri(
    Uri.parse("asset:///$audioFilePath"),
    tag: const MediaItem(
      id: 'notification',
      title: "Notification",
    ),
  );

  Future<void> playNotification() async {
    AudioPlayer? player;
    try {
      player = AudioPlayer();
      await player.setAudioSource(_playList);
      await player.play();
    } catch (e, stackTrace) {
      debugPrintStack(stackTrace: stackTrace);
    } finally {
      player?.dispose();
    }
  }
}

若将该代码放在Widget的按钮点击事件下,音频可正常播放。

AndroidManifest.xml配置如下:

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"/>

<!-- just_audio_background -->
<activity
        android:name="com.ryanheise.audioservice.AudioServiceActivity"
...
    <service
        android:name="com.ryanheise.audioservice.AudioService"
        android:foregroundServiceType="mediaPlayback"
        android:exported="true">
        <intent-filter>
            <action android:name="android.media.browse.MediaBrowserService" />
        </intent-filter>
    </service>

    <receiver
        android:name="com.ryanheise.audioservice.MediaButtonReceiver"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MEDIA_BUTTON" />
        </intent-filter>
    </receiver>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:57:45