Как продолжать воспроизведение видео при переходе в альбомный режим android

Я играю видео (в VideoView) в портретном режиме (не во весь экран), и когда я перехожу на

ландшафтный режим остановки видео.

Когда я изменю его на пейзаж, это видео появится в полноэкранном режиме и продолжит воспроизведение.

Любое предложение?

Ответы

Ответ 1

все, что вам нужно сделать, это добавить его в действие в AndroidManifest.xml:

 android:configChanges="orientation"

Ваша видеозапись должна выглядеть примерно так.

 <activity android:name=".VideoPlayerActivity" 
  android:configChanges="orientation" />

Если ваш целевой уровень API 13 или выше, вы должны добавить значение screenSize в дополнение к значению orientation, как описано здесь, Ваша видеоинформация должна выглядеть примерно так.

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

Затем добавьте следующий метод в VideoPlayerActivity:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

Ответ 2

Если вы не укажете иное, изменение конфигурации (например, изменение ориентации экрана, языка, устройств ввода и т.д.) приведет к уничтожению вашей текущей активности, выполнению процесса жизненного цикла обычной активности onPause(), onStop ( ) и onDestroy() в зависимости от ситуации. Если действие было на переднем плане или видимо для пользователя, как только onDestroy() вызывается в этом экземпляре, тогда будет создан новый экземпляр действия с любым сохраненнымInstanceState, который предыдущий экземпляр сформировал из onSaveInstanceState (Bundle).

Итак, что произошло за кулисами: currnet VideoView Activity (ландшафт) разрушен, создается новая активность VideoView (портрет) из-за того, что экранная настройка конфигурации была изменена и была немедленно уничтожена (где вы можете видеть эффекты на экране), последняя активность в стеке.

Попробуйте обработать эти методы и проверьте

    @Override
protected void onResume() {
    mVideoView.resume();
    super.onResume();
}

@Override
protected void onPause() {
    mVideoView.suspend();
    super.onPause();
}

@Override
protected void onDestroy() {
    mVideoView.stopPlayback();
    super.onDestroy();
}