diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java index 89eb0016..0f4d82c5 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java @@ -855,6 +855,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) public void close() { if (mInEditor) return; + mOrientationHelper.disable(); mCameraEngine.stop(false); if (mCameraPreview != null) mCameraPreview.onPause(); } diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/internal/OrientationHelper.java b/cameraview/src/main/java/com/otaliastudios/cameraview/internal/OrientationHelper.java index de47526a..b3d592a7 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/internal/OrientationHelper.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/internal/OrientationHelper.java @@ -37,6 +37,8 @@ public class OrientationHelper { @VisibleForTesting final DisplayManager.DisplayListener mDisplayOffsetListener; private int mDisplayOffset = -1; + + private boolean mEnabled; /** * Creates a new orientation helper. @@ -97,6 +99,11 @@ public class OrientationHelper { * Enables this listener. */ public void enable() { + if (mEnabled) { + //already enabled, will ignore call + return; + } + mEnabled = true; mDisplayOffset = findDisplayOffset(); if (Build.VERSION.SDK_INT >= 17) { DisplayManager manager = (DisplayManager) @@ -110,6 +117,8 @@ public class OrientationHelper { * Disables this listener. */ public void disable() { + if (!mEnabled) return; + mEnabled = false; mDeviceOrientationListener.disable(); if (Build.VERSION.SDK_INT >= 17) { DisplayManager manager = (DisplayManager)