Изменение просмотра видео, полноэкранного режима и ориентации – Android

Я реализовал электронную книгу, в которую встроены видеоплееры, мне нужна возможность переключать полноэкранный режим из плеера.

Мой вопрос заключается в следующем:

Каков наилучший способ воспроизвести видео в полноэкранном режиме и позволить пользователю вернуться из этого состояния на страницу, которую он читал раньше, а также сохранить текущее время видео.

Еще одна сложная ситуация, с которой мне нужно справиться:

Существуют разные визуализации страницы в портретной и альбомной ориентации, если пользователь переключает полноэкранный режим на портретную и поворачивает устройство, видео должно перейти в ландшафтный режим и изменить масштаб видео, чтобы оно соответствовало размеру экрана, но если пользователь возвращается с этой страницы, он должен вернуться к портрету еще раз.

Я могу дать больше информации, если это необходимо. заранее спасибо


person Marcos Vasconcelos    schedule 10.07.2012    source источник


Ответы (1)


Я могу порекомендовать использовать Activity с VideoView в макете.

Вы можете сохранить позицию при изменении ориентации, как это

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

Затем восстановите позицию и возобновите воспроизведение в методе onCreate.

@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);
}
person vasart    schedule 10.07.2012
comment
На самом деле, самая большая проблема заключается в удалении старого видеопросмотра со страницы и сохранении его состояния в соответствии с изменениями ориентации. (Не воссоздавать фоновую активность) - person Marcos Vasconcelos; 11.07.2012
comment
Итак, у нас есть mVideoView.getCurrentPosition(), так как установить для видеопросмотра это значение. И основная проблема заключается в том, чтобы узнать время воспроизведения видео и установить его. - person Tofeeq Ahmad; 15.12.2012
comment
mVideoView.getCurrentPosition() указывает время воспроизведения видео, и вы сохраняете его в outState. Затем в onCreate вы проверяете, есть ли у savedInstanceState это сохраненное время. В методе playVideoFromPos(int pos) вы можете вызывать mVideoView.seekTo(pos); и mVideoView.start();. Это сделает то, что вам нужно. - person vasart; 15.12.2012
comment
но я думаю, что он снова забуферит его - person Kalpesh Lakhani; 28.02.2013