如何查看特定播放列表的YouTube视频列表?

3

我是新来的这个网站,到目前为止,仅从浏览网站中就帮助了我很多。

我正在构建一个包含来自YouTube的播放列表的应用程序,到目前为止它正在工作,但我只有一个视频,下一个视频只会在按下“下一个”按钮后显示,我想创建该播放列表中所有视频的列表。

目前在使用Java和XML进行Android开发,如果可能的话,希望保持这种方式。

谢谢。

我的代码:

import android.drm.DrmStore;
import android.os.Bundle;
import android.widget.Toast;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayer.ErrorReason;
import com.google.android.youtube.player.YouTubePlayer.PlaybackEventListener;
import com.google.android.youtube.player.YouTubePlayer.PlayerStateChangeListener;
import com.google.android.youtube.player.YouTubePlayer.Provider;
import com.google.android.youtube.player.YouTubePlayerView;
import com.google.android.youtube.player.YouTubePlayer.OnFullscreenListener;

public class ky extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {
    public static final String API_KEY = "api";
    //http://youtu.be/<VIDEO_ID>
    public static final String VIDEO_ID = "PLZeI1YOvEK7EK499BrkBl95VseODbMDa-";

    public void onFullscreen(boolean isFullscreen) {
        if (isFullscreen)
            playbackEventListener.onPlaying();
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /** attaching layout xml **/
        setContentView(R.layout.ky);

        /** Initializing YouTube player view **/
        YouTubePlayerView youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player);
        youTubePlayerView.initialize(API_KEY, this);
    }

    @Override
    public void onInitializationFailure(Provider provider, YouTubeInitializationResult result) {
        Toast.makeText(this, "Failured to Initialize!", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onInitializationSuccess(Provider provider, final YouTubePlayer player, boolean wasRestored ) {
        /** add listeners to YouTubePlayer instance **/
        player.setPlayerStateChangeListener(playerStateChangeListener);
        player.setPlaybackEventListener(playbackEventListener);
        player.setOnFullscreenListener(new OnFullscreenListener() {
            @Override
            public void onFullscreen(boolean b) {
                if(b)
                    player.play();
                else
                    player.play();
            }
        });


        /** Start buffering **/
        if (!wasRestored) {

            player.loadPlaylist(VIDEO_ID);


        }
    }


    private PlaybackEventListener playbackEventListener = new PlaybackEventListener() {



        @Override
        public void onBuffering(boolean arg0) {
        }

        @Override
        public void onPaused() {
        }

        @Override
        public void onPlaying() {
        }

        @Override
        public void onSeekTo(int arg0) {
        }

        @Override
        public void onStopped() {
        }

    };


    private PlayerStateChangeListener playerStateChangeListener = new PlayerStateChangeListener() {

        @Override
        public void onAdStarted() {
        }

        @Override
        public void onError(ErrorReason arg0) {
        }

        @Override
        public void onLoaded(String arg0) {
        }

        @Override
        public void onLoading() {
        }


        @Override
        public void onVideoEnded() {
        }

        @Override
        public void onVideoStarted() {
        }
    };
}

xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:background="@color/black"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".example">

    <TextView android:text="@string/hello_world" android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


    <com.google.android.youtube.player.YouTubePlayerView
        android:id="@+id/youtube_player"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/black"/>

</RelativeLayout>

1
欢迎!您需要编辑您的帖子,展示您尝试过什么,以及可能出现的错误和/或输出。在您有机会编辑之前,我不会对您的问题进行投票,但是其他人可能会这样做,所以不要感到震惊。在编辑之前,您需要阅读此链接:http://stackoverflow.com/help/how-to-ask - LDMJoe
4个回答

5
我使用Youtube API的rest调用、异步任务和可重复使用视图实现了这个功能。
RecyclerView可以帮助创建一个列表,而异步任务则可以在后台进行http请求。
可以查阅有关异步任务和RecyclerView的基础知识。http://www.androidhive.info/拥有很好的教程。
Youtube的rest调用将会长成这样(我相信最多只能返回50个结果):

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=iBi9LVIrC-fVelw2-I2r-yrEk6SpXfO8&key=AIzaSyCI1oCTXwZzgVv7LDQ8NykSIUEWt247KnU&maxResults=50

以下是一些入门步骤:
例如在此播放列表网址中:https://www.youtube.com/watch?v=2q7XGuH2Q-s&list=PLuR1PJnGR-Igj4mNcr6_zDkQ3DTVA6wG5 “PL”后面的所有内容都是id,“uR1PJnGR-Igj4mNcr6_zDkQ3DTVA6wG5”。
现在您需要在Google开发者控制台中创建浏览器密钥。您不必在文本框中输入任何内容,只需单击回车并检索您的API密钥。
在您的Google开发人员控制台中,在“API”下确保您打开了Youtube数据API。

https://www.dropbox.com/s/6wtr7hpawx3ij64/youtubeApi.PNG

https://developers.google.com/youtube/android/player/downloads/

将下载的jar文件添加到新下载项目的libs文件夹中。不要通过将其拖入Android Studio来添加。
接下来进入Android Studio并单击项目下拉菜单:

https://www.dropbox.com/s/cjlr4fnnikpnx7a/Screen%20Shot%202015-04-22%20at%2012.39.28%20PM.png?dl=0

然后展开 libs 文件夹,您将看到 youtube jar。右键单击 jar 文件,然后单击“添加为库”。这里有一份更详细的教程:http://cmcoffee91.com/blog/2016/12/18/how-to-add-youtube-playlist-to-your-android-app/

0
另外两个答案是正确的。具体来说,您要查找的YouTube API REST调用位于PlaylistItems下,该调用获取播放列表中所有视频的列表。
从文档中可以看到,GET调用如下:
GET https://www.googleapis.com/youtube/v3/playlistItems?part=id&playlistId=[yourPlaylistId]

我已经看到过这个,但我不知道这个东西是如何工作的。这应该在Java页面上吗? - Orel Vadana
Java拥有大量的工具来向REST终端点发出HTTP请求,例如上面的例子。在谷歌上搜索许多优秀的示例。 - Captain Delano
除了YouTube的jar文件,我需要其他的jar文件吗?当编写GET行时,我收到无效标记错误。 - Orel Vadana
我建议你查找一些关于如何在Java中进行GET请求或HTTP调用的教程。已经有很多好的资源可供使用。在你弄清楚如何进行GET请求之后,上述信息将对你有所帮助。 - Captain Delano

0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接