AndroidにおけるYoutube再生について調べたので、とりあえず再生できるようになるまでのメモ。
準備
- Google Cloud Platformでプロジェクトを作成する
- Youtube Data API v3を有効にし、APIキーを取得する
- 公式のページからライブラリをダウンロードして、libsフォルダ内のYouTubeAndroidPlayerApi.jarを自分のプロジェクトにインポートする(AndroidStudio上でlibsにペースト後、右クリックでAdd As Libraryを選択)
- Android Manifestでインターネット通信を許可する
<uses-permission android:name="android.permission.INTERNET" />
- AndroidXで作るので、こちらを参考にYoutubePlayerSupportFragmentをAndroidX対応にさせる(大変助かりました)
レイアウト
とりあえず全画面再生
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.MainActivity">
<fragment
android:name="com.google.android.youtube.player.YouTubePlayerSupportFragmentX"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/player_fragment" />
</androidx.constraintlayout.widget.ConstraintLayout>
コード
MainActivity.kt
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.google.android.youtube.player.YouTubeInitializationResult
import com.google.android.youtube.player.YouTubePlayer
import com.google.android.youtube.player.YouTubePlayerSupportFragmentX
class MainActivity : AppCompatActivity(), YouTubePlayer.OnInitializedListener{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val youtubePlayerFragment = supportFragmentManager.findFragmentById(R.id.player_fragment) as YouTubePlayerSupportFragmentX
youtubePlayerFragment.initialize("APIキー",this)
}
/**
* initialize成功時に呼ばれる
*/
override fun onInitializationSuccess(
provider: YouTubePlayer.Provider?,
player: YouTubePlayer?,
wasRestored: Boolean
) {
player?.loadVideo("videoID")
}
/**
* initialize失敗時に呼ばれる
*/
override fun onInitializationFailure(
provider: YouTubePlayer.Provider?,
error: YouTubeInitializationResult?
) {
//なにかする予定
}
}
※videoIDはYoutubeの動画URLの末尾の方にある「v=」以降の英文字列になります。
これでとりあえず再生できました。