|
|
|
@ -48,7 +48,7 @@ public class Snapshot2PictureRecorder extends SnapshotGlPictureRecorder { |
|
|
|
|
private final static CameraLogger LOG = CameraLogger.create(TAG); |
|
|
|
|
private final static long LOCK_TIMEOUT = 2500; |
|
|
|
|
|
|
|
|
|
private static class FlashAction extends BaseAction { |
|
|
|
|
private class FlashAction extends BaseAction { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
protected void onStart(@NonNull ActionHolder holder) { |
|
|
|
@ -82,6 +82,26 @@ public class Snapshot2PictureRecorder extends SnapshotGlPictureRecorder { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private class ResetFlashAction extends BaseAction { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
protected void onStart(@NonNull ActionHolder holder) { |
|
|
|
|
super.onStart(holder); |
|
|
|
|
try { |
|
|
|
|
// See Camera2Engine.setFlash() comments: turning TORCH off has bugs and we must do
|
|
|
|
|
// as follows.
|
|
|
|
|
LOG.i("ResetFlashAction:", "Reverting the flash changes."); |
|
|
|
|
CaptureRequest.Builder builder = holder.getBuilder(this); |
|
|
|
|
builder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON); |
|
|
|
|
builder.set(CaptureRequest.FLASH_MODE, CaptureResult.FLASH_MODE_OFF); |
|
|
|
|
holder.applyBuilder(this, builder); |
|
|
|
|
builder.set(CaptureRequest.CONTROL_AE_MODE, mOriginalAeMode); |
|
|
|
|
builder.set(CaptureRequest.FLASH_MODE, mOriginalFlashMode); |
|
|
|
|
holder.applyBuilder(this); |
|
|
|
|
} catch (CameraAccessException ignore) {} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private final Action mAction; |
|
|
|
|
private final ActionHolder mHolder; |
|
|
|
|
private final boolean mActionNeeded; |
|
|
|
@ -135,18 +155,7 @@ public class Snapshot2PictureRecorder extends SnapshotGlPictureRecorder { |
|
|
|
|
@Override |
|
|
|
|
protected void dispatchResult() { |
|
|
|
|
// Revert our changes.
|
|
|
|
|
LOG.i("dispatchResult:", "Reverting the flash changes."); |
|
|
|
|
try { |
|
|
|
|
// See Camera2Engine.setFlash() comments: turning TORCH off has bugs and we must do
|
|
|
|
|
// as follows.
|
|
|
|
|
CaptureRequest.Builder builder = mHolder.getBuilder(mAction); |
|
|
|
|
builder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON); |
|
|
|
|
builder.set(CaptureRequest.FLASH_MODE, CaptureResult.FLASH_MODE_OFF); |
|
|
|
|
mHolder.applyBuilder(mAction, builder); |
|
|
|
|
builder.set(CaptureRequest.CONTROL_AE_MODE, mOriginalAeMode); |
|
|
|
|
builder.set(CaptureRequest.FLASH_MODE, mOriginalFlashMode); |
|
|
|
|
mHolder.applyBuilder(mAction); |
|
|
|
|
} catch (CameraAccessException ignore) {} |
|
|
|
|
new ResetFlashAction().start(mHolder); |
|
|
|
|
super.dispatchResult(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|