如何在片段中使用YouTube Player api?

时间:2014-01-08 07:30:08

标签: android android-youtube-api

我在我的应用程序中使用youtube播放器api,我使用了以下代码

的xml:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/rel1"
    android:background="#edeae5">
   <com.google.android.youtube.player.YouTubePlayerView
        android:id="@+id/youtubeplayerview"
        android:layout_width="match_parent"
        android:layout_height="200dp"/>
   </RelativeLayout>

我的活动:

  public class EditBloop extends YouTubeBaseActivity implements
YouTubePlayer.OnInitializedListener{


    public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.edit_bloop);
      youTubePlayerView = (YouTubePlayerView)findViewById(R.id.youtubeplayerview);
                youTubePlayerView.initialize(API_KEY, this);

    }

但是我在这里使用的是YouTubeBaseActivity,但在我的应用程序中,我想要一个片段中的youTubePlayer。 我怎样才能做到这一点?我看过一些使用YouTubePlayerSupportfragment的链接,但我不理解它们。

请建议。

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作

 public class MainActivity extends YouTubeBaseActivity implements 
 YouTubePlayer.OnInitializedListener{

 public static final String API_KEY = "key";
 public static final String VIDEO_ID = "o7VVHhK9zf0";

 private YouTubePlayer youTubePlayer;
 private YouTubePlayerFragment youTubePlayerFragment;
 private TextView textVideoLog;
 private Button btnViewFullScreen;

 private static final int RQS_ErrorDialog = 1;

 private MyPlayerStateChangeListener myPlayerStateChangeListener;
 private MyPlaybackEventListener myPlaybackEventListener;

 String log = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        youTubePlayerFragment = (YouTubePlayerFragment)getFragmentManager()
             .findFragmentById(R.id.youtubeplayerfragment);
        youTubePlayerFragment.initialize(API_KEY, this);

    }

 @Override
 public void onInitializationFailure(Provider provider,
   YouTubeInitializationResult result) {

  if (result.isUserRecoverableError()) {
   result.getErrorDialog(this, RQS_ErrorDialog).show(); 
  } else {
   Toast.makeText(this, 
     "YouTubePlayer.onInitializationFailure(): " + result.toString(), 
     Toast.LENGTH_LONG).show(); 
  }
 }

 @Override
 public void onInitializationSuccess(Provider provider, YouTubePlayer player,
   boolean wasRestored) {

  youTubePlayer = player;

  Toast.makeText(getApplicationContext(), 
    "YouTubePlayer.onInitializationSuccess()", 
    Toast.LENGTH_LONG).show();

  youTubePlayer.setPlayerStateChangeListener(myPlayerStateChangeListener);
  youTubePlayer.setPlaybackEventListener(myPlaybackEventListener);

  if (!wasRestored) {
        player.cueVideo(VIDEO_ID);
      }

 }

 private final class MyPlayerStateChangeListener implements PlayerStateChangeListener {

  private void updateLog(String prompt){
   log +=  "MyPlayerStateChangeListener" + "\n" + 
     prompt + "\n\n=====";
   textVideoLog.setText(log);
  };

  @Override
  public void onAdStarted() {
   updateLog("onAdStarted()");
  }

  @Override
  public void onError(
    com.google.android.youtube.player.YouTubePlayer.ErrorReason arg0) {
   updateLog("onError(): " + arg0.toString());
  }

  @Override
  public void onLoaded(String arg0) {
   updateLog("onLoaded(): " + arg0);
  }

  @Override
  public void onLoading() {
   updateLog("onLoading()");
  }

  @Override
  public void onVideoEnded() {
   updateLog("onVideoEnded()");
  }

  @Override
  public void onVideoStarted() {
   updateLog("onVideoStarted()");
  }

 }

 private final class MyPlaybackEventListener implements PlaybackEventListener {

  private void updateLog(String prompt){
   log +=  "MyPlaybackEventListener" + "\n-" + 
     prompt + "\n\n=====";
   textVideoLog.setText(log);
  };

  @Override
  public void onBuffering(boolean arg0) {
   updateLog("onBuffering(): " + String.valueOf(arg0));
  }

  @Override
  public void onPaused() {
   updateLog("onPaused()");
  }

  @Override
  public void onPlaying() {
   updateLog("onPlaying()");
  }

  @Override
  public void onSeekTo(int arg0) {
   updateLog("onSeekTo(): " + String.valueOf(arg0));
  }

  @Override
  public void onStopped() {
   updateLog("onStopped()");
  }

 }

}

xml

<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="com.google.android.youtube.player.YouTubePlayerFragment"
    android:id="@+id/youtubeplayerfragment"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="3"/>