Fix success parameter

pull/574/head
Mattia Iavarone 6 years ago
parent 98dc97d368
commit 8fc9b94ffc
  1. 7
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/Meter.java
  2. 4
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/metering/MeteringParameter.java

@ -281,10 +281,11 @@ public class Meter {
if (!mAutoExposure.isMetered()) mAutoExposure.onCapture(result); if (!mAutoExposure.isMetered()) mAutoExposure.onCapture(result);
if (!mAutoWhiteBalance.isMetered()) mAutoWhiteBalance.onCapture(result); if (!mAutoWhiteBalance.isMetered()) mAutoWhiteBalance.onCapture(result);
if (mAutoFocus.isMetered() && mAutoExposure.isMetered() && mAutoWhiteBalance.isMetered()) { 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"); 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) { } else if (System.currentTimeMillis() - mMeteringStartTime >= FORCED_END_DELAY) {
LOG.i("onCapture:", "FORCED_END_DELAY was reached. Some MeteringParameter is stuck. Forcing end."); LOG.i("onCapture:", "FORCED_END_DELAY was reached. Some MeteringParameter is stuck. Forcing end.");
onMeteringEnd(false); onMeteringEnd(false);

@ -33,11 +33,13 @@ public abstract class MeteringParameter {
} }
public final boolean isMetered() { public final boolean isMetered() {
// A non supported parameter should always appear as metered
return isMetered || !isSupported; return isMetered || !isSupported;
} }
public final boolean isSuccessful() { 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, public abstract void startMetering(@NonNull CameraCharacteristics characteristics,

Loading…
Cancel
Save