如何在 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 Web API 播放曲目

使用 Spotify 中 sp.albums 的 .json 输出从同一艺术家的多个专辑中获取曲目 ID

如何将曲目添加到 Spotify 中的“已加星标”播放列表?

Spotify + AppleScript:将当前曲目添加到播放列表

如何在 Spotify 中自动播放热门曲目?

Sonos - 如何通过我的 iOS 应用在 Sonos 设备上播放 Spotify/AppleMusic 曲目?