From e16ca8f7636ad67f64b687bee9e09781bdda7b00 Mon Sep 17 00:00:00 2001 From: Andrii Miroshnychenko Date: Tue, 5 Sep 2017 00:54:33 +0300 Subject: [PATCH 1/2] #20 Fixed bug with preview stretch on orientation change --- .../main/java/com/otaliastudios/cameraview/Camera1.java | 2 +- .../java/com/otaliastudios/cameraview/CameraView.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java index da5039932..7578c0316 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 @@ public void run() { @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 278bd790a..9e191c4fe 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java @@ -21,6 +21,7 @@ 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; @@ -462,6 +463,14 @@ public void start() { if (checkPermissions(getSessionType())) { mIsStarted = true; + + // Update display orientation for current CameraController + WindowManager manager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); + Display display = manager.getDefaultDisplay(); + if (display != null) { + mOrientationHelper.enable(display); + } + mCameraController.start(); } } From 6f6b928f73845bd176e383df15403e6ea2183781 Mon Sep 17 00:00:00 2001 From: Andrew Miroshnychenko Date: Tue, 5 Sep 2017 11:59:39 +0300 Subject: [PATCH 2/2] Changed OrientationHelper --- .../java/com/otaliastudios/cameraview/CameraView.java | 11 ++--------- .../otaliastudios/cameraview/OrientationHelper.java | 7 ++++--- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java index 4d7739c5c..b3a786bd3 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java @@ -170,8 +170,7 @@ protected CameraController instantiateCameraController(CameraCallbacks callbacks protected void onAttachedToWindow() { super.onAttachedToWindow(); if (!isInEditMode()) { - WindowManager manager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); - mOrientationHelper.enable(manager.getDefaultDisplay()); + mOrientationHelper.enable(getContext()); } } @@ -488,14 +487,8 @@ public void start() { if (checkPermissions(getSessionType())) { mIsStarted = true; - // Update display orientation for current CameraController - WindowManager manager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); - Display display = manager.getDefaultDisplay(); - if (display != null) { - mOrientationHelper.enable(display); - } - + 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 91230ef6b..53f9aaea8 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.view.Display; import android.view.OrientationEventListener; import android.view.Surface; +import android.view.WindowManager; class OrientationHelper { @@ -67,10 +68,10 @@ public void onOrientationChanged(int orientation) { }; } - 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); }