प्रत्येक बार अभिविन्यास परिवर्तन गतिविधि को तब तक बनाए रखा जाएगा जब तक कि सभी बाल घटकों के साथ गतिविधि न हो। अब महत्वपूर्ण हिस्सा यह है कि, YouTubePlayer.Provider इसके चरणों को रखेगा (जैसे: लोड किए गए वीडियो, वर्तमान प्लेबैक स्थिति और प्लेयर कॉन्फ़िगरेशन)। निम्नलिखित पर एक नज़र डालें:
YouTubePlayer Overview
आपके मामले में, ओरिएंटेशन परिवर्तन के बाद, गतिविधि अपने बच्चे टुकड़ा (youTubePlayerFragment) के रूप में रूप में लंबे समय से निर्मित किया गया है। इसलिए आपने YouTubePlayer के इंस्टेंट और डेटा (जैसे कि वीडियोआईडी या वीडियो यूआरएल) का संदर्भ खो दिया जो वीडियो लोड करने के लिए जरूरी है, लेकिन YouTubePlayer का प्रदाता अभी भी पिछला राज्य धारण कर रहा है, जो घूर्णन के बाद शून्य हो जाता है।
समाधान: आप वास्तव में ओरिएंटेशन बदलने डिवाइस से पहले YouTubePlayer पर वीडियो खेलने के लिए आवश्यक डेटा को बचाने के लिए, और डेटा वापस पुनः प्राप्त करने के लिए जब गतिविधि से निर्मित किया गया है एक तरह से प्रबंधन करने के लिए की जरूरत है। निम्नलिखित पर एक नज़र डालें:
YouTubePlayerFragment Overview
अपने कोड संरचना के बारे में सुनिश्चित नहीं हैं, लेकिन उम्मीद है कि निम्नलिखित कोड आप कुछ विचार दे देंगे:
@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");
}
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 !!!");
}
});
}