Dec 24, 2012

YouTube Android Player API Tutorial


YouTube Android API is experimental
"The YouTube Android Player API is an experimental API version, which means it is still in development, though we do not expect major interface changes. Until the experimental label is removed, the Deprecation Policy for YouTube APIs won't apply to this version as discussed in the API Terms of Service."

Note:
  • Users need to run version 4.2.16 of the mobile YouTube app (or higher) to use the API.
  • Change API Key before compiling & running source code.
Let's make simple demo using YouTube Android API. Demo contains one EditText and YouTubePlayerView. Just Provide YouTube video id and press "Go" button to start video.



Step 1 : Download YouTube Android API :  download

Step 2 : Create Android Project named "YouTubeAPIDemo" using eclipse.

Step 3 : Register this demo to get API key

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

Step 3 : Unzip YouTube Android API.
             Go to folder -> libs
             Copy "YouTubeAndroidPlayerApi.jar"
             Paste in Android Project : YouTubeAPIDemo->libs
             Right click on YouTubeAndroidPlayerApi.jar -> Build Path -> Add to build path.

 Step 4 : Add YouTube Video Player View in activity_main.xml, player view display in bold.
<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"
    tools:context=".MainActivity" >
    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="#C0C0C0"
        android:text="Enter Only Video ID in below EditText example : https://www.youtube.com/watch?v=fhWaJi1Hsfo"
        android:textAppearance="?android:attr/textAppearanceLarge" />
    <EditText
        android:id="@+id/eturl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView1"
        android:hint="Enter YouTube URL and Press Enter"
        android:text="fhWaJi1Hsfo"
        android:singleLine="true"
        android:imeOptions="actionGo" >
    </EditText>

    <com.google.android.youtube.player.YouTubePlayerView
        android:id="@+id/youtubeplayer"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/eturl"
        >
    </com.google.android.youtube.player.YouTubePlayerView>
    
</RelativeLayout>

Step 5 : Let's modify main activity code

package com.kpbird.youtubeapidemo;

import android.os.Bundle;
import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
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.Provider;
import com.google.android.youtube.player.YouTubePlayerView;

public class MainActivity extends YouTubeBaseActivity 
 implements YouTubePlayer.OnInitializedListener,OnEditorActionListener {

 private YouTubePlayerView ytpv;
 private YouTubePlayer ytp;
 private EditText et;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  ytpv = (YouTubePlayerView) findViewById(R.id.youtubeplayer);
  ytpv.initialize("YOUR API KEY", this);
  
  et = (EditText) findViewById(R.id.eturl);
  et.setOnEditorActionListener(this);
 }

 @Override
 public void onInitializationFailure(Provider arg0,YouTubeInitializationResult arg1) {
  Toast.makeText(this, "Initialization Fail", Toast.LENGTH_LONG).show();
 }

 @Override
 public void onInitializationSuccess(Provider provider, YouTubePlayer player,boolean wasrestored) {
  ytp = player;
  Toast.makeText(this, "Initialization  Success", Toast.LENGTH_LONG).show();
 }

 @Override
 public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
  if(actionId == EditorInfo.IME_ACTION_GO ){
   if(ytp !=null){
    ytp.loadVideo(et.getText().toString());
   }
  }
  return false;
 }
}
  • Extends class with YouTubeBaseActivity
  • Implements YouTubePlayer.OnInitializedListener 
  • Call initialize method with API key and class object
  • YouTubePlayer.loadVideo(<video id>)
You have to use YouTubeBaseActivity instand of Activity and implement interface named "YouTubePlayer.OnInitializedListener" to check initialization status and to get YouTubePlayer control.

Download Demo : Click
[ File->Download to download entire zip file]

Reference
  1. https://developers.google.com/youtube/android/player/
  2. https://developers.google.com/youtube/android/player/register
  3. https://developers.google.com/youtube/android/player/register