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>

GitHub

查看 Github