如何在 Spotify 上播放专辑中的曲目,以便之后使用 Spotify App Remote SDK for Android 播放专辑的下一首曲目?
Posted
技术标签:
【中文标题】如何在 Spotify 上播放专辑中的曲目,以便之后使用 Spotify App Remote SDK for Android 播放专辑的下一首曲目?【英文标题】:How play a track from a album on Spotify so that the next track of the album will play afterwards using Spotify App Remote SDK for Android? 【发布时间】:2020-11-22 22:47:20 【问题描述】:示例:我有一张 Spotify 专辑,我想播放它的第 15 首曲目。播放完第 15 首曲目后,我希望 Spotify 播放第 16 首曲目,然后播放第 17 首曲目,依此类推。
我正在使用适用于 android 的 Spotify App Remote SDK。我能想到三种可能的解决方案。
解决方案:
通过 Spotify Web API 获取专辑的以下曲目并将它们添加到队列中。 这对我不起作用,因为我不希望 Spotify 在用户保留队列时开始播放另一个播放列表或专辑。
使用后台服务,在当前曲目播放完毕后自动开始播放下一首曲目。 但是在这里,用户可能会遇到曲目之间的明显延迟。
启动专辑并跳过多次。这个选项理论上可行。不过看起来不是很优雅。
有没有更好的方法来实现这一点?例如,以某种方式向轨道添加上下文? 感谢您的帮助!
【问题讨论】:
为什么解决方案 1 有问题?播放当前专辑外的歌曲时不能删除队列吗? 如果应用之前被用户关闭,则不会... 应用被杀时删除队列?选项 1 似乎真的是这里的解决方案 在这种情况下,当应用程序被终止时删除队列不起作用,因为专辑应该继续播放,即使应用程序不再打开也是如此。但是当用户开始另一个专辑/播放列表时,队列应该不再存在。 【参考方案1】:有一个很好的示例代码Start/Resume a User's Playback你可以如何实现它。
"context_uri": "spotify:album:5ht7ItJgpBH7W6vJ5BqpPr",
"offset":
"position": 5
,
"position_ms": 0
将context_uri
设置为您的专辑ID,将offset
设置为您的曲目编号,将position_ms
设置为您的位置(以毫秒为单位)。
【讨论】:
【参考方案2】:用方法:
mSpotifyAppRemote.getPlayerApi().skipToIndex(java.lang.String uri, int index)
您必须将 uri 与上下文一起放置,例如专辑:
“spotify:专辑:5ht7ItJgpBH7W6vJ5BqpPr”
并且在参数索引中你需要把曲目在专辑中的位置。
您可以在此处的 SpotifyAppRemote 的 javadocs 中找到更多方法: https://spotify.github.io/android-sdk/app-remote-lib/docs/
【讨论】:
以上是关于如何在 Spotify 上播放专辑中的曲目,以便之后使用 Spotify App Remote SDK for Android 播放专辑的下一首曲目?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spotify 中 sp.albums 的 .json 输出从同一艺术家的多个专辑中获取曲目 ID
如何将曲目添加到 Spotify 中的“已加星标”播放列表?