【Android】youtubeの動画を再生する
Androidで、youtubeの動画を再生するには大きく分けて2つの方法があります。
1つは、youtubeアプリに対してIntentを飛ばす方法で、
例えば下記のように記載することで直接youtubeアプリを起動することができます。
Intent intent = new Intent(Intent.ACTION_SEARCH); intent.setPackage("com.google.android.youtube"); intent.putExtra("query", "Android"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
もう一つは、YouTube Android Player API
を使用する方法です。
これは、googleが提供しているAPIで、自分のアプリ内でyoutubeの再生機能を利用することができます。
(youtubeを起動はしない)
今回は、YouTube Android Player API
を使用して、
アプリ内で動画を再生する方法を試してみました。
API Keyを作成する
まずは、Google APIをアプリ上で実行するために、
Google Developlers Consoleにて、
APIKeyを取得します。
1.新規プロジェクトを作成
2.Youtube APIを有効にする
APIs & auth
を選択し、 YouTube Data API v3
をONにします。
3.API Keyを作成する
APIs & auth
>Credentials
を選択、 Public API access
にあるCREATE NEW KEY
ボタンを押下します。
キー種別の選択ダイアログが表示されるため、 Android key
を選択します。
続いて、表示されるテキストボックスにAndroidに組み込むkeystoreのSHA1のフィンガープリントおよび、
API実行を許可するアプリケーションのパッケージ名を入力します。
入力フォーマットは、[フィンガープリント];(セミコロン)[パッケージ名]となっています。
CREATE
ボタンを押下すれば、API key
の作成は完了です。
完了後に画面に表示されているAPI key
をAndroidアプリケーションに組み込んで使用します。
例: 9F:DA:1F:03:71:4B:1E:BD:90:76:51:AB:26:0C:B7:41:2F:94:AB:C6;com.sample.gcmtest
※ keystoreのフィンガープリントを確認するには
■ 使用するコマンド
keytool -exportcert -alias androiddebugkey -keystore [署名するkeystoreのパス] -list -v
今回は、Android ADTで用意されているデバッグ用のkeystoreで確認します。
デバッグ用のkeystoreは、[ユーザーHOME]/.android/debug.keystore
にデフォルトkeyが配置されていて、
パスワードは、android
です。
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v
上記のコマンド実行結果から、表示されるフィンガープリントのSHA1
の文字列をコピーすればOKです。
Androidアプリの実装
今回は、youtubeのプレーヤーをFragmentとして使用するサンプルアプリを実装します。
1.YouTube Android Player API
の最新バージョンをダウンロード
YouTube Android Player APIの最新版をダウンロードし、libs/
にあるYouTubeAndroidPlayerApi.jar
をプロジェクトへインポートします。
2.AndroidManifestの実装
下記、パーミッションを追加します。
<uses-permission android:name="android.permission.INTERNET"/>
3.layout.xmlにYouTubePlayerFragment
を定義
今回は、動画の再生に使用するYouTubePlayerFragment
をlayout.xmlに定義して使用します。
<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:orientation="vertical" > <fragment android:name="com.google.android.youtube.player.YouTubePlayerFragment" android:id="@+id/youtube_fragment" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
4.Activityの実装
下記サンプルでは、Activityに登録されたYouTubePlayerFragment
インスタンスを、
上記で取得したAPI Key
で初期化しています。
また、初期化のコールバックを取得するために、YouTubePlayer.OnInitializedListener
を実装し、
初期化が成功したタイミングでプレーヤーの実行準備を行っています。
APIの詳細については、YouTube Android Player API - リファレンス ガイドを参照してください。
public class MainActivity extends Activity implements YouTubePlayer.OnInitializedListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // フラグメントインスタンスを取得 YouTubePlayerFragment youTubePlayerFragment = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtube_fragment); // フラグメントのプレーヤーを初期化する youTubePlayerFragment.initialize("[API Key]", this); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onInitializationFailure(Provider provider, YouTubeInitializationResult error) { // プレーヤーの初期化失敗時に呼ばれる } @Override public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) { // プレーヤーの初期化成功時に呼ばれる if (!wasRestored) { // 指定された動画のサムネイルを読み込み、プレーヤーがその動画を再生する準備を行う player.cueVideo("nCgQDjiotG0"); } } }
これだけで、アプリ内でyoutubeの動画を再生することができます。
他にも、ウィジェットなどのAPIも用意されているようなので、
色々試して見たいと思います。
参考リンク
https://developers.google.com/youtube/android/player/ https://developers.google.com/youtube/android/player/setup