Innerzone’s Android blog

プログラムのメモとその他雑記。

AndroidアプリにYouTube API V3を導入する第一歩。

 先日リリースしたアプリ「miniTube」では、YouTubePlayer API V3とYouTubeData APIを利用しています。

Player API = 再生などを行うプレイヤー画面。

Data API   = 検索結果などのデータを引っ張ってくるAPIって事ですね。

これらを利用するにはGoogle Developersからサンプルアプリケーション(デモ)をダウンロードして解読すれば良いのですが、コメントも全て英語です(笑)

そこで、ここで部分的にでも解説できれば役立つ人もいるかなと思います。

今回はプレイヤーの表示と再生をするための最低限の内容にしました。

因みに僕の環境はMacAndroid Studio 1.0.1です。

 

準備

ここでは割愛しますが、まずはGoogle DevelopersからYouTubePlayerAPIを利用するためのAPIキーを入手してください。

それからPlayer API(YouTubeAndroidPlayerApi.jar)をダウンロードしてlibsに入れましょう。

Android StudioではlibsにAPI.jarを入れたら、gradleに記述が必要です。

という事でgradle。

dependencies {
    compile files('libs/YouTubeAndroidPlayerApi.jar')
}

XML

プレイヤーとボタンを好きな位置に配置しましょう。

プレイヤーにはViewとFragmentが有りますが、

再生するだけならFragmentが簡単ですので今回はこちらで。

Viewはカスタマイズする時に必要っぽいです。

<fragment
        android:id="@+id/youtube"
        android:name="com.google.android.youtube.player.YouTubePlayerFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" /> 

Activity

1、クラスにインターフェースをimplementsして、フィールド変数を記述。

public class MainActivity implements YouTubePlayer.OnInitializedListener {
// フィールド変数
private YouTubePlayer player;
private YouTubePlayerFragment youTubePlayer;

2、onCreate辺りにこちらを。

"動画ID"とは、下記を例とすると"Ea_V2qOx5Hs"の部分です。

f:id:Innerzone:20150311185610p:plain

// ボタン
Button btn = (Button) findViewById (R.id.btn);
btn.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {
	    player.loadVideo("動画ID");
});
// YouTubePlayerのフラグメント
youTubePlayer = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtube);
// プレイヤーを利用するために初期化する
youTubePlayer.initialize("最初に取得したAPIキーを記述", this);

3、上記のプレイヤー初期化(initialize)で呼ばれるメソッド。成功時と失敗時の二つ。

// プレーヤーの初期化成功時に呼ばれる
@Override
public void onInitializationSuccess(YouTubePlayer.Provider arg0, final YouTubePlayer player, boolean wasRestored) {
	this.player = player;
}

// プレーヤーの初期化失敗時に呼ばれる
@Override
public void onInitializationFailure(YouTubePlayer.Provider arg0, YouTubeInitializationResult errorReason) {
}

4、最後に、Playerの状態保存とその復帰で必要なメソッド

Playerが置かれたアクティビティから画面遷移したりした場合に勝手に呼ばれます。

// YouTubePlayerの状態を保存
@Override
protected void onSaveInstanceState(Bundle outState) {
	super.onSaveInstanceState(outState);
}

// アクティビティが戻ると呼ばれるっぽい
// フルスクリーンにすると呼ばれた
// YouTubePlayerの状態を復帰
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
	super.onRestoreInstanceState(savedInstanceState);
}

これで、ボタンを押すと動画が再生されるアプリが完成しました。