前言:
此篇我們來實作內崁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);
}
});
文獻:




沒有留言:
張貼留言