如何在Spotify Android应用程序中自动播放播放列表

时间:2015-03-15 10:11:26

标签: android spotify

我正在尝试在Spotify应用中播放已知的播放列表。我得到的最好的是加载播放列表,但不播放它。

我尝试了两件事。首先从搜索开始:

Intent intent = new Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH);
intent.setComponent(new ComponentName("com.spotify.music",
    "com.spotify.music.MainActivity"));
intent.putExtra(MediaStore.EXTRA_MEDIA_FOCUS, 
    MediaStore.Audio.Playlists.ENTRY_CONTENT_TYPE);
intent.putExtra(MediaStore.EXTRA_MEDIA_PLAYLIST, <PLAYLIST>);
intent.putExtra(SearchManager.QUERY, <PLAYLIST>);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);

我尝试用已知播放列表的名称替换PLAYLIST。还试过像“4Rj0zQ0Ux47upeqVSIuBx9”,“spotify:user:11158272501:playlist:4Rj0zQ0Ux47upeqVSIuBx9”等所有这些都是对这些字符串的搜索失败。

第二次尝试是View intent:

String uri = "https://play.spotify.com/user/11158272501/playlist/4Rj0zQ0Ux47upeqVSIuBx9";
Intent intent= new Intent( Intent.ACTION_VIEW, Uri.parse(uri) );
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);

这会加载播放列表但不播放。如果我然后使用其中一种方法发送KEYCODE_MEDIA_PLAY键,它只会恢复当前正在播放的列表,而不是这个新加载的列表。

任何人的帮助(包括Spotify开发者)?

BTW我不想使用Spotify SDK来实现我自己的Spotify播放器 - 当用户的设备上已经安装了一个非常好的播放器时,必须这样做是一种耻辱。

2 个答案:

答案 0 :(得分:7)

我从this blog找到答案。我缺少的是播放列表URI作为意图中的数据Uri。因此,请勿使用适当的Android搜索方式播放Play。

所以,使用问题中的第一个方法,你最终会得到这个:

Intent intent = new Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH);
intent.setData(Uri.parse(
    "spotify:user:11158272501:playlist:4Rj0zQ0Ux47upeqVSIuBx9"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);

需要注意的三件事:

  • Uri不能是https://play.spotify ...但必须是冒号分隔的类型。
  • Spotify帐户必须是高级帐户,否则播放列表会打开,但不会播放。
  • 如果屏幕关闭或显示锁定屏幕,则此功能无效。 spotify活动需要在加载和播放之前显示在屏幕上!

这最后一点意味着它实际上并不适合我...所以不接受答案。

答案 1 :(得分:0)

只需将:play添加到Spotify Intent URI

spotify:album:3avifwTCXoRzRxxGM1O0eN:play