我目前正在使用 Web Player SDK/Web Api 来控制我的应用程序中的 Spotify 播放。我当前遇到的问题是,每当我播放歌曲时,我无法检测到歌曲播放的结束,因为
state.track_window.next_songs
聆听时
player.addListener('player_state_changed', state => { });
“播放队列”中始终有项目,这导致几乎不可能检测到。
这个:
state && state.paused && state.context && state.context.metadata && state.context.metadata.uri == null
通常适用,但在 state.track_window.next_songs 的情况下
里面有任何东西,暂停永远不会被触发。
我想知道是否有人有解决方案,或者是否有办法清除特定 Spotify 播放器实例的播放队列?
谢谢!
最佳答案
我不确定我是否理解正确,但如果你想检测歌曲何时完成播放,你可以有一个名为 currentPlaying 的对象,其中包含当前播放歌曲的 ID,然后当有状态更新时,检查state.current_track的ID。如果它与您的 currentPlaying.id 不同,则表示歌曲已结束并开始下一首。
-----编辑------
有一种方法可以让 next_tracks 数组为空。如果您使用 "uris"
body 参数播放歌曲,您可以添加要播放的歌曲数组,并且其末尾的 next_tracks 数组为空。看这个截图:
要实现此目的,请查看 Spotify API: https://developer.spotify.com/console/put-play/?device_id=&body=%7B%20uris%3A%20%5Bspotify%3Atrack%3A3BQHpFgAp4l80e1XslIjNI%5D%20%7D
我只使用 "uris"
参数,而不是 "context_uri"
并且我只传递数组中的 1 首歌曲。歌曲播放完后就不再播放任何内容。
关于reactjs - Spotify Web SDK/Web API 当前播放状态的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59925558/