Za każdym razem, gdy zmienia się orientacja, aktywność będzie odtwarzana tak długo, jak z wszystkimi komponentami potomnymi. Ważną częścią jest to, że YouTubePlayer.Provider będzie przechodził etapy (takie jak: załadowane wideo, aktualna pozycja odtwarzania i konfiguracje odtwarzacza). Spojrzeć na następujące:
YouTubePlayer Overview
w Twoim przypadku, po zmianach orientacji aktywność jest odtworzona tak długo, jak jego fragment dziecięcej (youTubePlayerFragment). Straciłeś więc referencję chwili w YouTubePlayer i danych (takich jak videoID lub URL wideo), które są niezbędne do załadowania wideo, ale dostawca YouTubePlayer nadal utrzymuje poprzedni stan, który po rotacji staje się pusty.
Rozwiązanie: musisz zarządzać sposobem zapisywania danych potrzebnych do odtworzenia wideo na odtwarzaczu YouTube, zanim urządzenie zmieni orientację i odzyska dane po odtworzeniu działania. Spojrzeć na następujące:
YouTubePlayerFragment Overview
nie wiesz o swojej struktury kodu, ale nadzieję, że poniższy kod daje pewne wyobrażenie:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("currentVideoID",videoID);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
videoID = savedInstanceState.getString("currentVideoID");
}
Próbkę aby uzyskać wideo gra na youtubeplayer
private void loadYouTubePlayer(){
//load your youTubePlayerFragment here, i used YouTubePlayerSupportFragment(),may change in your case
//also you may not need to call getActivity(). Change the code as require
youTubePlayerFragment = (YouTubePlayerSupportFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.youtube_fragment);
youTubePlayerFragment.initialize(developerKey,new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
myYouTubePlayer = youTubePlayer;
myYouTubePlayer.setFullscreenControlFlags(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION | YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE);
myYouTubePlayer.setOnFullscreenListener(new YouTubePlayer.OnFullscreenListener() {
@Override
public void onFullscreen(boolean b) {
isFullScreenPlaying = b;
Log.d(null,"Now fullScreen");
}
});
if (!b) {
myYouTubePlayer.loadVideo(videoID);
}
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
Log.e(null,"Initialization Failed !!!");
}
});
}