Sunday, June 23, 2013

YouTubeThumbnailView example of YouTube Android Player API

Extend the exercise of "Simple example using YouTube Android Player API", add YouTubeThumbnailView. When the YouTubeThumbnailView clicked, start play the YouTubePlayer.

YouTubeThumbnailView

Modify layout file, activity_main.xml, to add <YouTubePlayerView>.
<LinearLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="http://android-er.blogspot.com/"
        android:textStyle="bold"
        android:layout_gravity="center_horizontal"
        android:autoLink="web" />
    
    <ScrollView 
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            
            <com.google.android.youtube.player.YouTubeThumbnailView
                android:id="@+id/youtubethumbnailview"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="5dp" />
            <com.google.android.youtube.player.YouTubePlayerView
                android:id="@+id/youtubeplayerview"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="5dp" />
            
        </LinearLayout>
    </ScrollView>
    
</LinearLayout>


MainActivity.java
package com.example.androidyoutubeapiplayer;

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.YouTubePlayerView;
import com.google.android.youtube.player.YouTubePlayer.Provider;
import com.google.android.youtube.player.YouTubeThumbnailLoader;
import com.google.android.youtube.player.YouTubeThumbnailLoader.ErrorReason;
import com.google.android.youtube.player.YouTubeThumbnailView;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class MainActivity extends YouTubeBaseActivity implements
YouTubePlayer.OnInitializedListener, YouTubeThumbnailView.OnInitializedListener{
 
 public static final String API_KEY = "AIzaSyCe6tORd9Ch4lx-9Ku5SQ476uS9OtZYsWA";
 public static final String VIDEO_ID = "o7VVHhK9zf0";
 
 private YouTubePlayer youTubePlayer;
 private YouTubePlayerView youTubePlayerView;
 private YouTubeThumbnailView youTubeThumbnailView;
 private YouTubeThumbnailLoader youTubeThumbnailLoader;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        youTubePlayerView = (YouTubePlayerView)findViewById(R.id.youtubeplayerview);
        youTubePlayerView.initialize(API_KEY, this);
        
        youTubeThumbnailView = (YouTubeThumbnailView)findViewById(R.id.youtubethumbnailview);
        youTubeThumbnailView.initialize(API_KEY, this);
        youTubeThumbnailView.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View arg0) {
    if(youTubePlayer != null){
     youTubePlayer.play();
    }
   }});
    }

 @Override
 public void onInitializationFailure(Provider provider,
   YouTubeInitializationResult result) {
  Toast.makeText(getApplicationContext(), 
    "YouTubePlayer.onInitializationFailure()", 
    Toast.LENGTH_LONG).show();
 }

 @Override
 public void onInitializationSuccess(Provider provider, YouTubePlayer player,
   boolean wasRestored) {
  
  youTubePlayer = player;
  
  Toast.makeText(getApplicationContext(), 
    "YouTubePlayer.onInitializationSuccess()", 
    Toast.LENGTH_LONG).show();
  
  if (!wasRestored) {
        player.cueVideo(VIDEO_ID);
      }
 }

 @Override
 public void onInitializationFailure(YouTubeThumbnailView thumbnailView, 
   YouTubeInitializationResult error) {
  
  Toast.makeText(getApplicationContext(), 
    "YouTubeThumbnailView.onInitializationFailure()", 
    Toast.LENGTH_LONG).show();
  
 }

 @Override
 public void onInitializationSuccess(YouTubeThumbnailView thumbnailView, 
   YouTubeThumbnailLoader thumbnailLoader) {
  
  Toast.makeText(getApplicationContext(), 
    "YouTubeThumbnailView.onInitializationSuccess()", 
    Toast.LENGTH_LONG).show();
  
  youTubeThumbnailLoader = thumbnailLoader;
  thumbnailLoader.setOnThumbnailLoadedListener(new ThumbnailLoadedListener());
       
  youTubeThumbnailLoader.setVideo(VIDEO_ID);
  
 }
 
 private final class ThumbnailLoadedListener implements
    YouTubeThumbnailLoader.OnThumbnailLoadedListener {

  @Override
  public void onThumbnailError(YouTubeThumbnailView arg0, ErrorReason arg1) {
   Toast.makeText(getApplicationContext(), 
     "ThumbnailLoadedListener.onThumbnailError()", 
     Toast.LENGTH_LONG).show();
  }

  @Override
  public void onThumbnailLoaded(YouTubeThumbnailView arg0, String arg1) {
   Toast.makeText(getApplicationContext(), 
     "ThumbnailLoadedListener.onThumbnailLoaded()", 
     Toast.LENGTH_LONG).show();
   
  }
  
 }

}


download filesDownload the files.

Download APK to try on your device.

Next: Handle initialization error YouTube API Service


The Tutorial: YouTube Android Player API step-by-step

6 comments:

LiJuan said...

It is not working. it displayed "com.google.android.youtube.player.YouTubePlayerView" could not be instantiated.

Anonymous said...

You should have YoutubePlayerApi to run that

Anonymous said...

how load more thumbnails . i mean not just the one video's thumbnail , i need to show many videos thumbnail

Unknown said...

hello everyone could you please help me I don't know how parse can get my videos from youtube and push them into android listview.

Unknown said...

if i press thumbnail button the video is playing just 2 seconds then its stopping.
why??

Unknown said...

great work thanks