2014-01-08 38 views
1

我使用YouTube播放器API在我的申請,我已經使用了下面的代碼如何在片段中使用YouTubePlayer 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的鏈接,但我並不理解它們。

請建議。

回答

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"/> 
+0

什麼,我需要在地方YouTubeBaseActivity – user1891910

+0

的延長片段閱讀文檔 – Raghunandan

+0

@ user1891910 https://developers.google。 COM/YouTube的/安卓/播放/參考/ COM /谷歌/安卓/ YouTube的/播放/ YouTubePlayerFragment。擴展'YouTubePlayerFragment',它擴展了'Fragment' – Raghunandan