From 58a6aa05f52adef594e9a7a51a0f07d66ddacfe8 Mon Sep 17 00:00:00 2001 From: Suneet Agrawal Date: Wed, 3 Jul 2019 18:18:19 +0530 Subject: [PATCH] refactored code for camera2 zoom --- .../cameraview/engine/Camera2Engine.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java index c0c175b4..1b925681 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java @@ -906,10 +906,10 @@ public class Camera2Engine extends CameraEngine implements ImageReader.OnImageAv mHandler.run(new Runnable() { @Override public void run() { - if (!mCameraOptions.isZoomSupported()) return; - Rect newRect = getZoomRect(zoom); - if(newRect != null){ + if (getEngineState() == STATE_STARTED && mCameraOptions.isZoomSupported()) { + Rect newRect = getZoomRect(zoom * mCameraOptions.getMaxZoomValue()); + mRepeatingRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, newRect); applyRepeatingRequestBuilder(); mZoomValue = zoom; @@ -917,14 +917,17 @@ public class Camera2Engine extends CameraEngine implements ImageReader.OnImageAv if (notify) { mCallback.dispatchOnZoomChanged(zoom, points); } + } + mZoomOp.end(null); } }); } + @NonNull private Rect getZoomRect(float zoomLevel) { - float maxZoom = mCameraOptions.getMaxZoomValue() * 10; + float maxZoom = mCameraOptions.getMaxZoomValue(); Rect activeRect = mCameraCharacteristics.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE); if ((zoomLevel <= maxZoom) && (zoomLevel > 1) && activeRect != null) { int minW = (int) (activeRect.width() / maxZoom); @@ -936,10 +939,9 @@ public class Camera2Engine extends CameraEngine implements ImageReader.OnImageAv cropW -= cropW & 3; cropH -= cropH & 3; return new Rect(cropW, cropH, activeRect.width() - cropW, activeRect.height() - cropH); - } else if (zoomLevel == 0) { - return new Rect(0, 0, activeRect.width(), activeRect.height()); } - return null; + + return new Rect(0, 0, activeRect.width(), activeRect.height()); } @Override