【发布时间】: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.position 和progress.duration。
【问题讨论】:
标签: react-native react-native-track-player