【问题标题】:Can't get playlist's tracks with kaaes Spotify web api无法使用 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 方法相匹配。

谢谢

【问题讨论】:

    标签: java android api spotify


    【解决方案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 改造版本将自动添加(在后台某处)到您的项目中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2013-08-07
    • 2018-07-10
    • 2017-06-16
    • 2016-12-26
    • 2012-12-20
    相关资源
    最近更新 更多