положение игрока не синхронизировано audio_service flutter
У меня есть приложение для аудиоплеера, которое использует
audio_service
а также
just_audio
плагины для воспроизведения. Кажется, все в порядке, но я столкнулся с двумя проблемами.
Позиция игрока не синхронизирована, продолжительность становится позицией, но когда я приостанавливаю звук, она отражает правильную позицию. Это поведение можно увидеть в уведомлениях и на
AudioService.positionStream
который обновляет панель поиска в пользовательском интерфейсе Flutter.Звук перестает воспроизводиться на экране блокировки неожиданно.
Мой код:
_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
состояние всякий раз, когда изменяется состояние игрока.