diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java index da503993..7578c031 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java @@ -449,7 +449,7 @@ class Camera1 extends CameraController { @Override boolean shouldFlipSizes() { - return mSensorOffset % 180 != 0; + return (mDeviceOrientation + mSensorOffset) % 180 != 0; } @Override diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java index 83d11199..b3a786bd 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java @@ -22,6 +22,7 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.util.Log; +import android.view.Display; import android.view.MotionEvent; import android.view.ViewGroup; import android.view.WindowManager; @@ -169,8 +170,7 @@ public class CameraView extends FrameLayout { protected void onAttachedToWindow() { super.onAttachedToWindow(); if (!isInEditMode()) { - WindowManager manager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); - mOrientationHelper.enable(manager.getDefaultDisplay()); + mOrientationHelper.enable(getContext()); } } @@ -487,6 +487,8 @@ public class CameraView extends FrameLayout { if (checkPermissions(getSessionType())) { mIsStarted = true; + // Update display orientation for current CameraController + mOrientationHelper.enable(getContext()); mCameraController.start(); } } diff --git a/cameraview/src/main/utils/com/otaliastudios/cameraview/OrientationHelper.java b/cameraview/src/main/utils/com/otaliastudios/cameraview/OrientationHelper.java index 91230ef6..53f9aaea 100644 --- a/cameraview/src/main/utils/com/otaliastudios/cameraview/OrientationHelper.java +++ b/cameraview/src/main/utils/com/otaliastudios/cameraview/OrientationHelper.java @@ -7,6 +7,7 @@ import android.util.SparseIntArray; import android.view.Display; import android.view.OrientationEventListener; import android.view.Surface; +import android.view.WindowManager; class OrientationHelper { @@ -67,10 +68,10 @@ class OrientationHelper { }; } - void enable(Display display) { - mDisplay = display; + void enable(Context context) { + mDisplay = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); mListener.enable(); - mLastKnownDisplayOffset = DISPLAY_ORIENTATIONS.get(display.getRotation()); + mLastKnownDisplayOffset = DISPLAY_ORIENTATIONS.get(mDisplay.getRotation()); mCallbacks.onDisplayOffsetChanged(mLastKnownDisplayOffset); }