前言:
此篇我們來實作內崁Youtube影音的功能。
為什麼不用WebView直接內崁?
因為WebView內崁的方式很醜阿。
會變下圖這樣
我不想要下面這些東西,想要單純的只有影片,其他東西我可以自由地運用。
當然還有一些比較特別的使用方式。
像是MixerBox,就是拿這個在營利。
1、首先先去這網頁下載他們的api
https://developers.google.com/youtube/android/player/downloads/
當然還有一些比較特別的使用方式。
像是MixerBox,就是拿這個在營利。
1、首先先去這網頁下載他們的api
https://developers.google.com/youtube/android/player/downloads/
下載下來會是一個.zip檔案那要怎麼import到android studio內呢?
2、先解壓縮吧。
你會找到YouTubeAndroidPlayerApi.jar這的檔案。
然後找到你的專案在最最上層開一個libs資料夾,以後好方便管理你import的東西。
然後找到你的專案在最最上層開一個libs資料夾,以後好方便管理你import的東西。
程式碼:
先給網路權限吧!
AndroidManifest
<uses-permission android:name="android.permission.INTERNET" />
1、增加YouTubePlayerView到xml內
在main_activity.java內設定View
main_activity.java
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.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="com.chat.a015865.youtube.MainActivity"> <com.google.android.youtube.player.YouTubePlayerView android:id="@+id/player_view" android:layout_width="match_parent" android:layout_height="wrap_content" /> </android.support.constraint.ConstraintLayout>
2、初始化YouTubePlayerView(Initialize)
MainActivity.java內,在要使用YouTubePlayerView的activity都一定要改extends繼承變成YouTubeBaseActivity,並且imp;ements YouTubePlayer.OnInitializedListener。
implements YouTubePlayer.OnInitializedListener 之後,請implements methods
拿到onInitializationSuccess(初始化成功)和onInitializationFailure(初始化失敗)
在onCreate內初始化YouTubePlayerView
mYoutubePlayerView.initialize(API_KEY, this);
API_KEY目前用不到,可以先隨便給值。
Youtube網址的格式 https://www.youtube.com/watch?v= xxxxxx 後面的的xxxxxx可以改變你想看的頻道。試著去YOUTUBE上找你喜愛的頻道,COPY後面的xxxxxx回到MainActivity.java改變VEDIO_ID,就可以改變你要看的東西。
MainActivity.java
public class MainActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener { public static final String API_KEY = "htyhry"; //https://www.youtube.com/watch?v=public static final String VIDEO_ID = "OsUr8N7t4zc"; private YouTubePlayerView mYoutubePlayerView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mYoutubePlayerView = (YouTubePlayerView) findViewById(R.id.player_view); mYoutubePlayerView.initialize(API_KEY, this); } @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean wasRestored) { Toast.makeText(this, "onInitializationSuccess!", Toast.LENGTH_SHORT).show(); if (youTubePlayer == null) { Log.d("CheckPoint", "CheckPoint youtubePlayer == null"); return; } if (!wasRestored) { Log.d("CheckPoint", "CheckPoint !wasRestored"); youTubePlayer.cueVideo(VIDEO_ID); } } @Override public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) { Toast.makeText(this, "Failed to initialize.", Toast.LENGTH_LONG).show(); } }
這時候你就可以開始跑你的專案了,五月天的頑固就出現拉!
3、控制 YouTubePlayer 事件
其中還有一些控制YouTubePlayer的方法,像是可以再按暫停的同時,加入你要的廣告....之類的。
在MainAcitivity.java內 >> onInitializationSuccess這裡面加入這個方法,可以控制Loading、onLoaded、onAdStarted....等等。
在MainAcitivity.java內 >> onInitializationSuccess這裡面加入這個方法,可以控制Loading、onLoaded、onAdStarted....等等。
youTubePlayer.setPlayerStateChangeListener(new YouTubePlayer.PlayerStateChangeListener() { @Override public void onLoading() { Log.d("CheckPoint", "CheckPoint onLoading"); } @Override public void onLoaded(String s) { Log.d("CheckPoint", "CheckPoint onLoaded"); } @Override public void onAdStarted() { Log.d("CheckPoint", "CheckPoint onAdStarted"); } @Override public void onVideoStarted() { Log.d("CheckPoint", "CheckPoint onVideoStarted"); } @Override public void onVideoEnded() { Log.d("CheckPoint", "CheckPoint onVideoEnded"); } @Override public void onError(YouTubePlayer.ErrorReason errorReason) { Log.d("CheckPoint", "CheckPoint onError = " + errorReason); } });
文獻:
沒有留言:
張貼留言