положение игрока не синхронизировано audio_service flutter

У меня есть приложение для аудиоплеера, которое использует audio_service а также just_audioплагины для воспроизведения. Кажется, все в порядке, но я столкнулся с двумя проблемами.

  1. Позиция игрока не синхронизирована, продолжительность становится позицией, но когда я приостанавливаю звук, она отражает правильную позицию. Это поведение можно увидеть в уведомлениях и на AudioService.positionStream который обновляет панель поиска в пользовательском интерфейсе Flutter.

  2. Звук перестает воспроизводиться на экране блокировки неожиданно.

Мой код:

      _playbackSubscription = _player.playbackEventStream.listen((event) {
     setState(_player, event);
   });

 void setState(AudioPlayer _player, event) {
   if (queue == null || queue.isEmpty) return;
   var controls = [
     MediaControl.skipToPrevious,
     _player.playing ? MediaControl.pause : MediaControl.play,
     MediaControl.skipToNext,
     MediaControl.stop
   ];
   AudioServiceBackground.setMediaItem(
       queue.elementAt(_player.currentIndex).copyWith(
             duration: _player.duration,
           ));
   AudioServiceBackground.setState(
       playing: _player.playing,
       bufferedPosition: _player.bufferedPosition,
       speed: _player.speed,
       shuffleMode: _player.shuffleModeEnabled
           ? AudioServiceShuffleMode.all
           : AudioServiceShuffleMode.none,
       repeatMode:
           AudioServiceRepeatMode.values.elementAt(_player.loopMode.index),
       position: _player.position,
       processingState: {
         ProcessingState.idle: AudioProcessingState.none,
         ProcessingState.loading: AudioProcessingState.connecting,
         ProcessingState.buffering: AudioProcessingState.buffering,
         ProcessingState.ready: AudioProcessingState.ready,
         ProcessingState.completed: AudioProcessingState.completed,
       }[_player.processingState],
       systemActions: [
         MediaAction.seekBackward,
         MediaAction.seekTo,
         MediaAction.seekForward
       ],
       controls: controls,
       updateTime: event?.updateTime ?? DateTime.now());
 }

Сводка блока кода: в основном настройка AudioService состояние всякий раз, когда изменяется состояние игрока.

0 ответов

Другие вопросы по тегам