Добавить
android:screenOrientation="portrait"
к вашей активности в файле манифеста. Тогда действие не будет воссоздано при ротации устройства. После этого обработайте изменение ориентации самостоятельно.
Я предпочитаю делать это с помощью OrientationChangeListener.
@Override
public void onResume() {
//handle orientation change
orientationEventListener = new OrientationEventListener(getActivity(), SensorManager.SENSOR_DELAY_NORMAL) {
@Override
public void onOrientationChanged(int orientation) {
updateUi(orientation); //rotate ui elements on orientation change
videoCapture?.setTargetRotation(getOrientation(orientationHint)) //notify the capture session about the orientation change
}
};
orientationEventListener.enable();
}
Метод getOrientation () возвращает одно целое число из целых чисел константы Surface: Surface.ROTATION_0, Surface.ROTATION_90, Surface.ROTATION_180 или Surface.ROTATION_270.
Также обратите внимание, что вам необходимо отключить directionEventListener в методе onPause ().