无法使用 kaaes Spotify web api 获取播放列表的曲目

Posted

技术标签:

【中文标题】无法使用 kaaes Spotify web api 获取播放列表的曲目【英文标题】:Can't get playlist's tracks with kaaes Spotify web api 【发布时间】:2019-03-19 00:18:04 【问题描述】:

我是一个非常菜鸟用户,我正在尝试在我的 android 应用中播放一些来自 Spotify 的曲目。目前我正在使用 kaaes API: https://github.com/kaaes/spotify-web-api-android

我正在努力从一个非常具体的播放列表和一个非常具体的用户 ID 中检索曲目。看来我做不到,我发现的唯一例子是旧的,对我没有帮助。这是我尝试过的:

Accessing list of playlists from Pager object

SpotifyApi api = new SpotifyApi();
SpotifyService spotify = api.getService();

spotify.getPlaylistTracks("USERID","PLAYLISTID", new Callback<Pager<PlaylistTrack>>() 
        @Override
            public void success(Pager<PlaylistTrack> playlistTrackPager, Response response) 
            Log.e("TEST", "GOT the tracks in playlist");
            List<PlaylistTrack> items = playlistTrackPager.items;
            for( PlaylistTrack pt : items)
                Log.e("TEST", pt.track.name + " - " + pt.track.id);
            
        
        @Override
            public void failure(RetrofitError error) 
                Log.e("TEST", "Could not get playlist tracks");
            
    );

它点亮红色回调(当我打电话给new Callback&lt;Pager&lt;PlaylistTrack&gt;&gt;()时)它说:

无法解析符号“回调”

如果我 alt+enter 点击它,它会说:

将库“retrofit-2.4.0.retrofit-2.4.0”添加到类路径

如果我这样做,那么它会在所有Callback&lt;Pager&lt;PlaylistTrack&gt;&gt; 下划线,并带有错误:

然后我 alt+enter 再次显示:

类“从回调派生的匿名类”必须声明为抽象或实现抽象方法“onResponse(Call, Response)” '回调'

然后我 alt+enter 再次单击并选择:Implements methods onResponse() and onFailure() 我用新方法调整了旧代码,所以它将是:

spotify.getPlaylistTracks("USERID","PLAYLISTID", new Callback<Pager<PlaylistTrack>>() 
            @Override
            public void onResponse(Call<Pager<PlaylistTrack>> playlistTrackPager, Response<Pager<PlaylistTrack>> response) 
                Log.e("TEST", "GOT the tracks in playlist");
                List<PlaylistTrack> items = playlistTrackPager.items;
                for( PlaylistTrack pt : items)
                    Log.e("TEST", pt.track.name + " - " + pt.track.id);
                
            

            @Override
            public void onFailure(Call<Pager<PlaylistTrack>> call, Throwable t) 
                Log.e("TEST", "Could not get playlist tracks");
            
        );

但是现在,.items 被点亮为红色并说:

无法解析符号“项目”

我在网上找不到任何关于此的内容。我似乎无法将找到的旧代码示例与新的 API 方法相匹配。

谢谢

【问题讨论】:

【参考方案1】:

您的第一段代码在我的测试项目中没有显示任何错误。我猜有重叠导入或其他库的问题。

如果您添加以下导入并删除其他改造/ kaaes 导入,请检查它是否有效:

import kaaes.spotify.webapi.android.SpotifyApi;
import kaaes.spotify.webapi.android.SpotifyService;
import kaaes.spotify.webapi.android.models.Pager;
import kaaes.spotify.webapi.android.models.PlaylistTrack;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;

如果这不起作用,请从您的类路径/项目中删除改造 2 库并重试,因为此包装器仍使用改造 1.9.0。

【讨论】:

谢谢 tomaculum,我错过了 Retrofit 导入,但 Android Studio 在我 cntl+v 后立即将其删除。我按照 Retrofit 页面上的说明进行操作 square.github.io/retrofit:下载了 .jar 文件-> new -> new module -> import jar aar package - 在依赖项中添加改造: implementation 'com.squareup.retrofit2:retrofit:2.4.0' 然后,如果我使用问题的第一个代码 sn-p,并且我编写了改造导入,它不会删除它们,但它们是灰色的(改造以红色突出显示)并且 AS 说: 无法解析符号“改造”我该怎么办?我需要下载以前版本的 Retrofit 吗?谢谢 您是否在项目的其他任何地方使用改造?如果不是,只需删除 build.gradle 文件中的 retrofit2 依赖项和/或删除下载的 jar 文件并重试。当您设置 kaees 包装器依赖项时,所需的 1.9 改造版本将自动添加(在后台某处)到您的项目中。

以上是关于无法使用 kaaes Spotify web api 获取播放列表的曲目的主要内容,如果未能解决你的问题,请参考以下文章

Spotify Web API 无法获取访问令牌

验证 spotify web api 不起作用

Kibana 可视化监控报警插件 KAAE 的介绍与使用

无法使用 Spotify API 进行授权

如何使用 Spotify Web API 获取当前播放/最近播放的歌曲

Spotify WebApi 无法获取用户播放列表数据