Search code examples
androidscreen-orientationandroid-video-playerorientation-changesandroid-orientation

VideoView & Fullscreen & Orientation changes - Android


I implemented a e-Reader that has embedded video players on it, I need a option to toggle fullscreen mode from the player.

My question is the following:

Which is the best way to play a video on fullscreen and let the user come back from this state to the page he is reading before and also keep the current time of the video.

Another complicated situation I need to handle is:

There's different visualizations of a page on portrait and landscape, if the user toggle fullscreen on portrait and rotate the device, the video should go to landscape mode and rescale the video to fit the screen, but if the user goes back from this page he should return to portrait once again.

I'm able to give more info if needed. Thanks in advance


Solution

  • I can recommend using Activity with VideoView in layout.

    You can save position on orientation change like this

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        if (mVideoView.isPlaying()) outState.putInt("pos", mVideoView.getCurrentPosition());
    }
    

    Then restore position and resume playing in onCreate method

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.video);
    
        mVideoView = (VideoView) findViewById(R.id.video);
        MediaController mediaController = new MediaController(this);
        mediaController.setAnchorView(mVideoView);
        mVideoView.setMediaController(mediaController);
        mVideoView.setOnCompletionListener(this);
    
        Intent intent = getIntent();
        path = intent.getExtras().getString("path");
    
        int pos = 0;
        if (savedInstanceState != null) {
            pos = savedInstanceState.getInt("pos");
        }
    
        playVideoFromPos(pos);
    }