Flutter Audio_Service 和 Just_Audio 在 iOS 上无法正常工作。

4

我有一个歌曲列表在歌曲屏幕上。如果用户点击列表中的其中一项,我会调用 loadFirstPlaylist() 将歌曲列表(专辑中的所有歌曲)加载到队列中,然后跳过队列并播放。它在 Android 上工作正常,但我在 iOS 上遇到了以下错误:

GitHub 源代码 [NowPlaying] [MRNowPlaying] 忽略 setPlaybackState,因为应用程序不包含平台 com.apple.mediaremote.set-playback-state 的权限
Future<void> loadFirstPlayList(List<MediaItem> playlist, int index) async {
    await emptyPlaylist();
    if (playlist.isNotEmpty) {
      await _audioHandler.addQueueItems(playlist);
      await _audioHandler.skipToQueueItem(index);
      await _audioHandler.play();
   }
}

音频处理方法

@override
Future<void> addQueueItems(List<MediaItem> mediaItems) async {
    // manage Just Audio
    final audioSource = mediaItems.map(_createAudioSource);
    _playlist.addAll(audioSource.toList());

    // notify system
    final newQueue = queue.value..addAll(mediaItems);
    queue.add(newQueue);
}

@override
Future<void> skipToQueueItem(int index) async {
    if (index < 0 || index >= queue.value.length) return;
    if (_player.shuffleModeEnabled) {
      index = _player.shuffleIndices![index];
    }
    _player.seek(Duration.zero, index: index);
 }

@override
Future<void> play() => _player.play();
1个回答

2
我不知道你是否已经明白了,但是我在尝试加载空播放列表时遇到了相同的问题。我正在遵循 这个示例,其中包括一个_loadEmptyPlaylist方法。然而,当我实现它时,这会导致播放器无声地失败。现在似乎通过不对空音频序列调用loadAudioSource来解决了这个问题。

1
我在audio_service中更改并使用了播放列表示例作为基础处理程序,并添加了我的其他功能。目前它运行良好。感谢您的答复。 - Alex Aung
@colioli 非常感谢。这解决了我的问题。很奇怪,因为在 Android 中使用空播放列表可以正常工作,但在 iOS 上却没有任何错误或异常。楼主,你应该考虑将此标记为正确答案。再次感谢! - Abushawish
在这种情况下(不要_loadEmptyPlaylist),你如何以及何时执行这行代码: await _player.setAudioSource(_playlist); ??? - Vladyslav Ulianytskyi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接