2015-11-19 41 views
1

我是這個網站的新手,到目前爲止,它確實幫助我從尋找。 我正在構建和包含YouTube播放列表的應用,到目前爲止它正在工作,但我只有一個視頻,下一個視頻只會在按下下一個按鈕時顯示,我想創建一個包含該視頻的所有視頻的列表播放列表。 目前使用java的android和xml,如果可能的話,想保持這種方式。 謝謝。如何查看特定播放列表的YouTube列表?

我的代碼:

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

歡迎您!您需要修改帖子以顯示您嘗試過的內容,然後輸入錯誤的輸出和/或錯誤。在你有機會編輯之前,我不會低估你的問題,但如果其他人這樣做,不要感到震驚。在編輯之前,您需要閱讀[this](http://stackoverflow.com/help/how-to-ask)。 – LDMJoe

回答

0

另外兩個答案是正確的。具體來說,您正在查找的YouTube API REST調用位於PlaylistItems之下,該列表獲取播放列表中的所有視頻列表。

從文檔中,GET調用:

GET https://www.googleapis.com/youtube/v3/playlistItems?part=id&playlistId=[yourPlaylistId] 
+0

我已經見過這個了,但我不知道這個東西是如何工作的。這應該在Java頁面上? –

+0

Java具有[大量工具](http://stackoverflow.com/questions/3913502/restful-call-in-java)向上述REST端點發出HTTP請求。谷歌周圍有很多很棒的例子。 – Amasa

+0

我需要一些jar文件而不是youtube jar文件嗎?寫入GET行時出現無效令牌錯誤。 –

2

我已經使用YouTube API取得REST調用,異步任務和recyclerview做到了這一點。

RecyclerView有助於創建列表和異步任務,幫助您在後臺發出http請求。

查看async任務和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 Developer控制檯中創建瀏覽器密鑰。您不必在文本框中輸入任何內容,只需點擊輸入,然後找回您的api密鑰

在您的Google Developers控制檯中的「API」下,確保您轉換Youtube數據api。

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

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

從下載添加的jar文件到您的庫中的新下載的項目文件夾。不通過拖動到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.right點擊jar文件並點擊「添加爲庫」。

我有一個更深入的教程在這裏: http://cmcoffee91.com/blog/2016/12/18/how-to-add-youtube-playlist-to-your-android-app/