From 8fc9b94ffc4c9e19712f1c7ac909e5c00918be2d Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Fri, 30 Aug 2019 16:00:13 +0200 Subject: [PATCH] Fix success parameter --- .../java/com/otaliastudios/cameraview/engine/Meter.java | 7 ++++--- .../cameraview/engine/metering/MeteringParameter.java | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Meter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Meter.java index 1e66a564..abf08b39 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Meter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Meter.java @@ -281,10 +281,11 @@ public class Meter { if (!mAutoExposure.isMetered()) mAutoExposure.onCapture(result); if (!mAutoWhiteBalance.isMetered()) mAutoWhiteBalance.onCapture(result); if (mAutoFocus.isMetered() && mAutoExposure.isMetered() && mAutoWhiteBalance.isMetered()) { - // Use the AF success for dispatching the callback, since the public - // callback is currently related to AF. LOG.i("onCapture:", "all MeteringParameters have converged. Dispatching onMeteringEnd"); - onMeteringEnd(mAutoFocus.isSuccessful()); + boolean success = mAutoFocus.isSuccessful() + && mAutoExposure.isSuccessful() + && mAutoWhiteBalance.isSuccessful(); + onMeteringEnd(success); } else if (System.currentTimeMillis() - mMeteringStartTime >= FORCED_END_DELAY) { LOG.i("onCapture:", "FORCED_END_DELAY was reached. Some MeteringParameter is stuck. Forcing end."); onMeteringEnd(false); diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/metering/MeteringParameter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/metering/MeteringParameter.java index 9c34bb04..2fb4a5af 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/metering/MeteringParameter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/metering/MeteringParameter.java @@ -33,11 +33,13 @@ public abstract class MeteringParameter { } public final boolean isMetered() { + // A non supported parameter should always appear as metered return isMetered || !isSupported; } public final boolean isSuccessful() { - return isSuccessful && isSupported; + // A non supported parameter should always appear as successful + return isSuccessful || !isSupported; } public abstract void startMetering(@NonNull CameraCharacteristics characteristics,