Fix TORCH bug

pull/580/head
Mattia Iavarone 6 years ago
parent e22541d5f3
commit 40180462ab
  1. 9
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java
  2. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/locking/AutoExposure.java
  3. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/locking/AutoFocus.java
  4. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/locking/AutoWhiteBalance.java
  5. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/metering/AutoExposure.java
  6. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/metering/AutoFocus.java
  7. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/metering/AutoWhiteBalance.java
  8. 7
      cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot2PictureRecorder.java
  9. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java
  10. 2
      demo/src/main/java/com/otaliastudios/cameraview/demo/CameraActivity.java
  11. 3
      demo/src/main/res/layout/activity_camera.xml

@ -260,9 +260,16 @@ public class Camera2Engine extends CameraEngine implements ImageReader.OnImageAv
if (mLocker != null && mLocker.isLocking()) { if (mLocker != null && mLocker.isLocking()) {
mLocker.onCapture(result); mLocker.onCapture(result);
} }
Integer aeMode = result.get(CaptureResult.CONTROL_AE_MODE);
Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE); Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE);
Integer afState = result.get(CaptureResult.CONTROL_AF_STATE);
Boolean aeLock = result.get(CaptureResult.CONTROL_AE_LOCK);
Integer aeTriggerState = result.get(CaptureResult.CONTROL_AE_PRECAPTURE_TRIGGER); Integer aeTriggerState = result.get(CaptureResult.CONTROL_AE_PRECAPTURE_TRIGGER);
LOG.v("metering:", "aeState:", aeState, "aeTriggerState:", aeTriggerState); Integer afTriggerState = result.get(CaptureResult.CONTROL_AF_TRIGGER);
LOG.v("metering:",
"aeMode:", aeMode, "aeLock:", aeLock,
"aeState:", aeState, "aeTriggerState:", aeTriggerState,
"afState:", afState, "afTriggerState:", afTriggerState);
} }
}; };

@ -14,7 +14,7 @@ import com.otaliastudios.cameraview.CameraLogger;
public class AutoExposure extends Parameter { public class AutoExposure extends Parameter {
private static final String TAG = AutoExposure.class.getSimpleName(); private static final String TAG = AutoExposure.class.getSimpleName();
private static final CameraLogger LOG = CameraLogger.create(TAG); private static final CameraLogger LOG = CameraLogger.create(TAG + "Locking");
public AutoExposure(@NonNull LockingChangeCallback callback) { public AutoExposure(@NonNull LockingChangeCallback callback) {
super(callback); super(callback);

@ -14,7 +14,7 @@ import com.otaliastudios.cameraview.CameraLogger;
public class AutoFocus extends Parameter { public class AutoFocus extends Parameter {
private static final String TAG = AutoFocus.class.getSimpleName(); private static final String TAG = AutoFocus.class.getSimpleName();
private static final CameraLogger LOG = CameraLogger.create(TAG); private static final CameraLogger LOG = CameraLogger.create(TAG + "Locking");
public AutoFocus(@NonNull LockingChangeCallback callback) { public AutoFocus(@NonNull LockingChangeCallback callback) {
super(callback); super(callback);

@ -14,7 +14,7 @@ import com.otaliastudios.cameraview.CameraLogger;
public class AutoWhiteBalance extends Parameter { public class AutoWhiteBalance extends Parameter {
private static final String TAG = AutoWhiteBalance.class.getSimpleName(); private static final String TAG = AutoWhiteBalance.class.getSimpleName();
private static final CameraLogger LOG = CameraLogger.create(TAG); private static final CameraLogger LOG = CameraLogger.create(TAG + "Locking");
public AutoWhiteBalance(@NonNull LockingChangeCallback callback) { public AutoWhiteBalance(@NonNull LockingChangeCallback callback) {
super(callback); super(callback);

@ -18,7 +18,7 @@ import java.util.List;
public class AutoExposure extends Parameter { public class AutoExposure extends Parameter {
private static final String TAG = AutoExposure.class.getSimpleName(); private static final String TAG = AutoExposure.class.getSimpleName();
private static final CameraLogger LOG = CameraLogger.create(TAG); private static final CameraLogger LOG = CameraLogger.create(TAG + "Metering");
public AutoExposure(@NonNull MeteringChangeCallback callback) { public AutoExposure(@NonNull MeteringChangeCallback callback) {
super(callback); super(callback);

@ -18,7 +18,7 @@ import java.util.List;
public class AutoFocus extends Parameter { public class AutoFocus extends Parameter {
private static final String TAG = AutoFocus.class.getSimpleName(); private static final String TAG = AutoFocus.class.getSimpleName();
private static final CameraLogger LOG = CameraLogger.create(TAG); private static final CameraLogger LOG = CameraLogger.create(TAG + "Metering");
public AutoFocus(@NonNull MeteringChangeCallback callback) { public AutoFocus(@NonNull MeteringChangeCallback callback) {
super(callback); super(callback);

@ -18,7 +18,7 @@ import java.util.List;
public class AutoWhiteBalance extends Parameter { public class AutoWhiteBalance extends Parameter {
private static final String TAG = AutoWhiteBalance.class.getSimpleName(); private static final String TAG = AutoWhiteBalance.class.getSimpleName();
private static final CameraLogger LOG = CameraLogger.create(TAG); private static final CameraLogger LOG = CameraLogger.create(TAG + "Metering");
public AutoWhiteBalance(@NonNull MeteringChangeCallback callback) { public AutoWhiteBalance(@NonNull MeteringChangeCallback callback) {
super(callback); super(callback);

@ -155,9 +155,12 @@ public class Snapshot2PictureRecorder extends SnapshotGlPictureRecorder implemen
// Revert our changes. // Revert our changes.
LOG.i("dispatchResult:", "Reverting the capture intent changes."); LOG.i("dispatchResult:", "Reverting the capture intent changes.");
try { try {
// See Camera2Engine.setFlash(). It's better to change these one by one. // See Camera2Engine.setFlash() comments: turning TORCH off has bugs and we must do
// as follows.
mBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);
mBuilder.set(CaptureRequest.FLASH_MODE, CaptureResult.FLASH_MODE_OFF);
mSession.capture(mBuilder.build(), null, null);
mBuilder.set(CaptureRequest.CONTROL_AE_MODE, mOriginalAeMode); mBuilder.set(CaptureRequest.CONTROL_AE_MODE, mOriginalAeMode);
mSession.capture(mBuilder.build(), mCallback, null);
mBuilder.set(CaptureRequest.FLASH_MODE, mOriginalFlashMode); mBuilder.set(CaptureRequest.FLASH_MODE, mOriginalFlashMode);
mSession.setRepeatingRequest(mBuilder.build(), mCallback, null); mSession.setRepeatingRequest(mBuilder.build(), mCallback, null);
} catch (CameraAccessException ignore) {} } catch (CameraAccessException ignore) {}

@ -196,7 +196,7 @@ public class GlCameraPreview extends FilterCameraPreview<GLSurfaceView, SurfaceT
// we'll just re-use whatever was there before. // we'll just re-use whatever was there before.
mInputSurfaceTexture.updateTexImage(); mInputSurfaceTexture.updateTexImage();
mInputSurfaceTexture.getTransformMatrix(mTransformMatrix); mInputSurfaceTexture.getTransformMatrix(mTransformMatrix);
LOG.v("onDrawFrame:", "timestamp:", mInputSurfaceTexture.getTimestamp()); // LOG.v("onDrawFrame:", "timestamp:", mInputSurfaceTexture.getTimestamp());
// For Camera2, apply the draw rotation. // For Camera2, apply the draw rotation.

@ -213,7 +213,7 @@ public class CameraActivity extends AppCompatActivity implements View.OnClickLis
PicturePreviewActivity.setPictureResult(result); PicturePreviewActivity.setPictureResult(result);
Intent intent = new Intent(CameraActivity.this, PicturePreviewActivity.class); Intent intent = new Intent(CameraActivity.this, PicturePreviewActivity.class);
intent.putExtra("delay", callbackTime - mCaptureTime); intent.putExtra("delay", callbackTime - mCaptureTime);
startActivity(intent); // startActivity(intent);
mCaptureTime = 0; mCaptureTime = 0;
LOG.w("onPictureTaken called! Launched activity."); LOG.w("onPictureTaken called! Launched activity.");
} }

@ -20,7 +20,8 @@
app:cameraPreview="glSurface" app:cameraPreview="glSurface"
app:cameraPlaySounds="true" app:cameraPlaySounds="true"
app:cameraGrid="off" app:cameraGrid="off"
app:cameraFlash="auto" app:cameraFlash="on"
app:cameraPictureSnapshotMetering="true"
app:cameraAudio="on" app:cameraAudio="on"
app:cameraFacing="back" app:cameraFacing="back"
app:cameraGestureTap="autoFocus" app:cameraGestureTap="autoFocus"

Loading…
Cancel
Save