Как продолжать воспроизведение видео при переходе в альбомный режим 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();
}