ITG
ITG

Reputation: 79

youtube player stops when changing to full screen mode

Currently, I am using the youtube api to display youtube videos on my app and it works great, but whenever I change to fullscreen mode the video stops and I need to press the play button to start it again.

It might sound as an unimportant issue, but it is quite important for the purpose of my app, so I would really appreciate any solution.

Here is my code:

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

        final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;


        getWindow().getDecorView().setSystemUiVisibility(flags);


        final View decorView = getWindow().getDecorView();
        decorView
                .setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {

                    @Override
                    public void onSystemUiVisibilityChange(int visibility) {
                        if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                            decorView.setSystemUiVisibility(flags);
                        }
                    }
                });

        videoID = getIntent().getStringExtra("video_id");
        youTubePlayerView = findViewById(R.id.youtube_player_view);
        initializeYoutubePlayer();
        String [] temp = getIntent().getStringArrayExtra("playlist_order");
        if(temp != null)
            order = Arrays.copyOf(temp, temp.length);
        else {
            ImageView nextTrackButton = findViewById(R.id.nextTrackButton);
            ImageView lastTrackButton = findViewById(R.id.lastTrackButton);

            nextTrackButton.setVisibility(View.GONE);
            lastTrackButton.setVisibility(View.GONE);
        }


    }

    /**
     * initialize the youtube player
     */
    private void initializeYoutubePlayer() {
        youTubePlayerView.initialize(Constants.getKey(), new YouTubePlayer.OnInitializedListener() {

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



                if (!wasRestored) {

                    youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);


                    youTubePlayer.loadVideo(videoID);


                    youTubePlayer.play();

                    youTubePlayer.setShowFullscreenButton(true);

                    myYouTubePlayer = youTubePlayer;

                    myYouTubePlayer.setPlayerStateChangeListener(new YouTubePlayer.PlayerStateChangeListener() {
                        @Override
                        public void onLoading() {

                        }

                        @Override
                        public void onLoaded(String s) {

                        }

                        @Override
                        public void onAdStarted() {

                        }

                        @Override
                        public void onVideoStarted() {

                        }

                        @Override
                        public void onVideoEnded() {
                            int nextI = 0;
                            for (int i = 0; i < order.length; i++) {
                                if (order[i].equals(videoID)) {
                                    nextI = i + 1;
                                    break;
                                }

                            }

                            if (nextI >= order.length) {
                                nextI = 0;
                            }

                            videoID = order[nextI];
                            myYouTubePlayer.loadVideo(videoID);
                        }

                        @Override
                        public void onError(YouTubePlayer.ErrorReason errorReason) {

                        }
                    });

                }
            }

            @Override
            public void onInitializationFailure(YouTubePlayer.Provider arg0, YouTubeInitializationResult arg1) {
                //print or show error if initialization failed
                Log.e(TAG, "Youtube Player View initialization failed");
            }
        });
    }

    @SuppressLint("NewApi")
    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    } 

Upvotes: 0

Views: 1610

Answers (2)

Sujeet Kumar
Sujeet Kumar

Reputation: 1942

Add this line to your Manifest file

<activity android:name=".MainActivity"
        android:configChanges="orientation|screenSize"
        >
    </activity>

Upvotes: 1

ReyAnthonyRenacia
ReyAnthonyRenacia

Reputation: 17613

Youtube API Android has a YouTubePlayer.OnFullscreenListener. I think you can use that and make it so that the video continues to play() when it goes fullscreen.

Upvotes: 0

Related Questions