pull/696/head
Mattia Iavarone 6 years ago
parent 4531981d5e
commit 560be94dcb
  1. 51
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java

@ -818,7 +818,14 @@ public class Camera2Engine extends CameraEngine implements ImageReader.OnImageAv
boolean unlock = (fullPicture && getPictureMetering()) boolean unlock = (fullPicture && getPictureMetering())
|| (!fullPicture && getPictureSnapshotMetering()); || (!fullPicture && getPictureSnapshotMetering());
if (unlock) { if (unlock) {
unlockAndResetMetering(); mOrchestrator.scheduleStateful("reset metering after picture",
CameraState.PREVIEW,
new Runnable() {
@Override
public void run() {
unlockAndResetMetering();
}
});
} }
} }
@ -1479,7 +1486,8 @@ public class Camera2Engine extends CameraEngine implements ImageReader.OnImageAv
mCallback.dispatchOnFocusEnd(gesture, action.isSuccessful(), point); mCallback.dispatchOnFocusEnd(gesture, action.isSuccessful(), point);
mOrchestrator.remove("reset metering"); mOrchestrator.remove("reset metering");
if (shouldResetAutoFocus()) { if (shouldResetAutoFocus()) {
mOrchestrator.scheduleDelayed("reset metering", mOrchestrator.scheduleStatefulDelayed("reset metering",
CameraState.PREVIEW,
getAutoFocusResetDelay(), getAutoFocusResetDelay(),
new Runnable() { new Runnable() {
@Override @Override
@ -1510,26 +1518,26 @@ public class Camera2Engine extends CameraEngine implements ImageReader.OnImageAv
return mMeterAction; return mMeterAction;
} }
@EngineThread
private void unlockAndResetMetering() { private void unlockAndResetMetering() {
if (getState() == CameraState.PREVIEW && !isChangingState()) { // Needs the PREVIEW state!
Actions.sequence( Actions.sequence(
new BaseAction() { new BaseAction() {
@Override @Override
protected void onStart(@NonNull ActionHolder holder) { protected void onStart(@NonNull ActionHolder holder) {
super.onStart(holder); super.onStart(holder);
applyDefaultFocus(holder.getBuilder(this)); applyDefaultFocus(holder.getBuilder(this));
holder.getBuilder(this) holder.getBuilder(this)
.set(CaptureRequest.CONTROL_AE_LOCK, false); .set(CaptureRequest.CONTROL_AE_LOCK, false);
holder.getBuilder(this) holder.getBuilder(this)
.set(CaptureRequest.CONTROL_AWB_LOCK, false); .set(CaptureRequest.CONTROL_AWB_LOCK, false);
holder.applyBuilder(this); holder.applyBuilder(this);
setState(STATE_COMPLETED); setState(STATE_COMPLETED);
// TODO should wait results? // TODO should wait results?
} }
}, },
new MeterResetAction() new MeterResetAction()
).start(Camera2Engine.this); ).start(Camera2Engine.this);
}
} }
//endregion //endregion
@ -1568,6 +1576,7 @@ public class Camera2Engine extends CameraEngine implements ImageReader.OnImageAv
@Override @Override
public void applyBuilder(@NonNull Action source) { public void applyBuilder(@NonNull Action source) {
// NOTE: Should never be called on a non-engine thread!
applyRepeatingRequestBuilder(); applyRepeatingRequestBuilder();
} }

Loading…
Cancel
Save