【问题标题】:Event 'PlaybackQueueEnded' is not fired in React Native Track Player在 React Native Track Player 中未触发事件“PlaybackQueueEnded”
【发布时间】:2022-07-20 21:33:32
【问题描述】:

我正在使用 react-native-track-player 包在我的 React Native 移动应用程序中播放音乐文件。

由于某些issue,一旦音轨队列到达末尾,我需要停止音轨播放器。为此,我使用事件PlaybackQueueEnded 来调用以下代码sn-p。 (我在useTrackPlayerEvents 钩子中使用了它以及PlayerTrackChanged 事件,当该事件被触发时,设置当前正在播放的音频文件的标题、作者和背景)。

  useTrackPlayerEvents(
   
   // To set the title, author, and background of the current audio file being played

    [Event.PlaybackTrackChanged, Event.PlaybackQueueEnded],
    async event => {
      if (
        event.type === Event.PlaybackTrackChanged &&
        event.nextTrack !== null
      ) {
        const track = await TrackPlayer.getTrack(event.nextTrack);
        const title = track?.title;
        const artist = track?.artist;
        const artwork: SetStateAction<any> = track?.artwork;
        setTrackTitle(title);
        setTrackArtist(artist);
        setTrackArtwork(artwork);
      }

    // To stop the player once it reaches the end of the queue

      if (
        event.type === Event.PlaybackQueueEnded &&
        event.position === progress.duration
      ) {
        TrackPlayer.stop();
      }
    },
  );

但是上面的代码并没有像我预期的那样工作。似乎在播放队列的最后一首曲目时没有触发事件PlaybackQueueEnded。有人可以帮我解决这个问题吗?

谢谢。

PS:我正在使用useProgress 钩子获取正在播放的音频文件的当前时间和持续时间,并将其值分配给进度变量。至此,我正在接受progress.positionprogress.duration

【问题讨论】:

    标签: react-native react-native-track-player


    【解决方案1】:

    PlaybackQueueEnded 将在歌曲播放完毕时触发,您不需要检查 event.position === progress.duration

    【讨论】:

      猜你喜欢
      • 2020-12-01
      • 2022-12-18
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多