diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java index 758bb895..ab75719b 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java @@ -855,7 +855,7 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera @Override - void startAutoFocus(@Nullable final Gesture gesture, @NonNull final PointF point) { + void startAutoFocus(@Nullable final Gesture gesture, @NonNull final PointF point, final Boolean autoReset) { // Must get width and height from the UI thread. int viewWidth = 0, viewHeight = 0; if (mPreview != null && mPreview.hasSurface()) { @@ -891,7 +891,9 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera // TODO lock auto exposure and white balance for a while mCameraCallbacks.dispatchOnFocusEnd(gesture, success, p); mHandler.get().removeCallbacks(mPostFocusResetRunnable); - mHandler.get().postDelayed(mPostFocusResetRunnable, mPostFocusResetDelay); + if (autoReset) { + mHandler.get().postDelayed(mPostFocusResetRunnable, mPostFocusResetDelay); + } } }); } catch (RuntimeException e) { diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java index 4b28bb31..b2f40473 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java @@ -366,7 +366,7 @@ abstract class CameraController implements abstract void stopVideo(); - abstract void startAutoFocus(@Nullable Gesture gesture, @NonNull PointF point); + abstract void startAutoFocus(@Nullable Gesture gesture, @NonNull PointF point, Boolean autoReset); abstract void setPlaySounds(boolean playSounds); diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java index deafbe50..05aa5c8d 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java @@ -541,7 +541,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver { case FOCUS: case FOCUS_WITH_MARKER: - mCameraController.startAutoFocus(gesture, points[0]); + mCameraController.startAutoFocus(gesture, points[0], true); break; case ZOOM: @@ -1055,11 +1055,12 @@ public class CameraView extends FrameLayout implements LifecycleObserver { * * @param x should be between 0 and getWidth() * @param y should be between 0 and getHeight() + * @param autoCancel true if auto focus should be cancelled once focused */ - public void startAutoFocus(float x, float y) { + public void startAutoFocus(float x, float y, Boolean autoCancel) { if (x < 0 || x > getWidth()) throw new IllegalArgumentException("x should be >= 0 and <= getWidth()"); if (y < 0 || y > getHeight()) throw new IllegalArgumentException("y should be >= 0 and <= getHeight()"); - mCameraController.startAutoFocus(null, new PointF(x, y)); + mCameraController.startAutoFocus(null, new PointF(x, y), autoCancel); }