just_audio_background
这个包插件到 just_audio 以添加后台播放支持和远程控制(通知、锁屏、耳机按钮、智能手表、Android Auto 和 CarPlay)。它支持应用程序只有一个 AudioPlayer 实例的简单用例。
如果您的应用程序有更复杂的需求,建议您直接使用 audio_service 包。
设置
将 just_audio_background 依赖项添加到您的 pubspec.yaml 文件中,以及 just_audio
dependencies:
just_audio: any # substitute version number
just_audio_background: any # substitute version number
然后在您的应用程序的 main 方法中添加以下初始化代码
Future<void> main() async {
await JustAudioBackground.init(
androidNotificationChannelId: 'com.ryanheise.bg_demo.channel.audio',
androidNotificationChannelName: 'Audio playback',
androidNotificationOngoing: true,
);
runApp(MyApp());
}
像往常一样创建您的播放器
player = AudioPlayer();
为加载到播放器的每个 IndexedAudioSource 设置一个 MediaItem 标签。例如
AudioSource.uri(
Uri.parse('https://example.com/song1.mp3'),
tag: MediaItem(
// Specify a unique ID for each media item:
id: '1',
// Metadata to display in the notification:
album: "Album name",
title: "Song name",
artUri: Uri.parse('https://example.com/albumart.jpg'),
),
),
Android 设置
对您的项目 AndroidManifest.xml 文件进行以下更改
<manifest ...>
<!-- ADD THESE TWO PERMISSIONS -->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<application ...>
...
<!-- EDIT THE android:name ATTRIBUTE IN YOUR EXISTING "ACTIVITY" ELEMENT -->
<activity android:name="com.ryanheise.audioservice.AudioServiceActivity" ...>
...
</activity>
<!-- ADD THIS "SERVICE" element -->
<service android:name="com.ryanheise.audioservice.AudioService">
<intent-filter>
<action android:name="android.media.browse.MediaBrowserService" />
</intent-filter>
</service>
<!-- ADD THIS "RECEIVER" element -->
<receiver android:name="com.ryanheise.audioservice.MediaButtonReceiver" >
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
</application>
</manifest>
iOS 设置
将此插入到您的 Info.plist 文件中
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>