Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

like image 785
Marcos Vasconcelos Avatar asked Jul 10 '12 22:07

Marcos Vasconcelos


People also ask

What is VideoView?

android.widget.VideoView. Displays a video file. The VideoView class can load images from various sources (such as resources or content providers), takes care of computing its measurement from the video so that it can be used in any layout manager, and provides various display options such as scaling and tinting.


1 Answers

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);
}
like image 165
vasart Avatar answered Oct 04 '22 00:10

vasart