diff --git a/.github/workflows/emulator_script.sh b/.github/workflows/emulator_script.sh index b16b9ede..d0b87a09 100755 --- a/.github/workflows/emulator_script.sh +++ b/.github/workflows/emulator_script.sh @@ -1,4 +1,4 @@ #!/usr/bin/env bash adb logcat -c -adb logcat CameraOrchestrator:I CameraEngine:I CameraView:I CameraCallbacks:I CameraIntegrationTest:I MediaEncoderEngine:I MediaEncoder:I AudioMediaEncoder:I VideoMediaEncoder:I TextureMediaEncoder:I VideoRecorder:I FullVideoRecorder:I SnapshotVideoRecorder:I CameraUtils:I MessageQueue:W WorkerHandler:I DeviceEncoders:I MPEG4Writer:I *:E -v color & +adb logcat CameraOrchestrator:I CameraEngine:I CameraView:I CameraCallbacks:I CameraIntegrationTest:I MediaEncoderEngine:I MediaEncoder:I AudioMediaEncoder:I VideoMediaEncoder:I TextureMediaEncoder:I VideoRecorder:I FullVideoRecorder:I SnapshotVideoRecorder:I CameraUtils:I MessageQueue:W WorkerHandler:I DeviceEncoders:I MPEG4Writer:I FullPictureRecorder:I SnapshotPictureRecorder:I *:E -v color & ./gradlew cameraview:connectedCheck \ No newline at end of file diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full1PictureRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full1PictureRecorder.java index d93ca9b1..6578f027 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full1PictureRecorder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full1PictureRecorder.java @@ -2,7 +2,6 @@ package com.otaliastudios.cameraview.picture; import android.hardware.Camera; -import com.otaliastudios.cameraview.CameraLogger; import com.otaliastudios.cameraview.PictureResult; import com.otaliastudios.cameraview.internal.utils.ExifHelper; @@ -16,11 +15,7 @@ import java.io.IOException; /** * A {@link PictureResult} that uses standard APIs. */ -public class Full1PictureRecorder extends PictureRecorder { - - private static final String TAG = Full1PictureRecorder.class.getSimpleName(); - @SuppressWarnings("unused") - private static final CameraLogger LOG = CameraLogger.create(TAG); +public class Full1PictureRecorder extends FullPictureRecorder { private Camera mCamera; @@ -39,10 +34,12 @@ public class Full1PictureRecorder extends PictureRecorder { @Override public void take() { + LOG.i("take() called."); mCamera.takePicture( new Camera.ShutterCallback() { @Override public void onShutter() { + LOG.i("take(): got onShutter callback."); dispatchOnShutter(true); } }, @@ -51,6 +48,7 @@ public class Full1PictureRecorder extends PictureRecorder { new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, final Camera camera) { + LOG.i("take(): got picture callback."); int exifRotation; try { ExifInterface exif = new ExifInterface(new ByteArrayInputStream(data)); @@ -63,15 +61,18 @@ public class Full1PictureRecorder extends PictureRecorder { } mResult.data = data; mResult.rotation = exifRotation; + LOG.i("take(): starting preview again. ", Thread.currentThread()); camera.startPreview(); // This is needed, read somewhere in the docs. dispatchResult(); } } ); + LOG.i("take() returned."); } @Override protected void dispatchResult() { + LOG.i("dispatching result. Thread:", Thread.currentThread()); mCamera = null; super.dispatchResult(); } diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full2PictureRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full2PictureRecorder.java index 6709af29..f4ed71c7 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full2PictureRecorder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full2PictureRecorder.java @@ -9,7 +9,6 @@ import android.media.Image; import android.media.ImageReader; import android.os.Build; -import com.otaliastudios.cameraview.CameraLogger; import com.otaliastudios.cameraview.PictureResult; import com.otaliastudios.cameraview.controls.PictureFormat; import com.otaliastudios.cameraview.engine.Camera2Engine; @@ -33,12 +32,9 @@ import androidx.exifinterface.media.ExifInterface; * A {@link PictureResult} that uses standard APIs. */ @RequiresApi(Build.VERSION_CODES.LOLLIPOP) -public class Full2PictureRecorder extends PictureRecorder +public class Full2PictureRecorder extends FullPictureRecorder implements ImageReader.OnImageAvailableListener { - private static final String TAG = Full2PictureRecorder.class.getSimpleName(); - private static final CameraLogger LOG = CameraLogger.create(TAG); - private final ActionHolder mHolder; private final Action mAction; private final ImageReader mPictureReader; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/FullPictureRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/FullPictureRecorder.java new file mode 100644 index 00000000..99f794d8 --- /dev/null +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/FullPictureRecorder.java @@ -0,0 +1,20 @@ +package com.otaliastudios.cameraview.picture; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.otaliastudios.cameraview.CameraLogger; +import com.otaliastudios.cameraview.PictureResult; + +/** + * Helps with logging. + */ +public abstract class FullPictureRecorder extends PictureRecorder { + private static final String TAG = FullPictureRecorder.class.getSimpleName(); + protected static final CameraLogger LOG = CameraLogger.create(TAG); + + public FullPictureRecorder(@NonNull PictureResult.Stub stub, + @Nullable PictureResultListener listener) { + super(stub, listener); + } +} diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot1PictureRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot1PictureRecorder.java index 73a841b5..ed8d3175 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot1PictureRecorder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot1PictureRecorder.java @@ -1,14 +1,11 @@ package com.otaliastudios.cameraview.picture; -import android.graphics.ImageFormat; import android.graphics.Rect; import android.graphics.YuvImage; import android.hardware.Camera; -import com.otaliastudios.cameraview.CameraLogger; import com.otaliastudios.cameraview.PictureResult; import com.otaliastudios.cameraview.engine.Camera1Engine; -import com.otaliastudios.cameraview.engine.CameraEngine; import com.otaliastudios.cameraview.engine.offset.Reference; import com.otaliastudios.cameraview.internal.utils.CropHelper; import com.otaliastudios.cameraview.internal.utils.RotationHelper; @@ -23,11 +20,7 @@ import java.io.ByteArrayOutputStream; /** * A {@link PictureRecorder} that uses standard APIs. */ -public class Snapshot1PictureRecorder extends PictureRecorder { - - private static final String TAG = Snapshot1PictureRecorder.class.getSimpleName(); - @SuppressWarnings("unused") - private static final CameraLogger LOG = CameraLogger.create(TAG); +public class Snapshot1PictureRecorder extends SnapshotPictureRecorder { private Camera1Engine mEngine1; private Camera mCamera; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot2PictureRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot2PictureRecorder.java index dc2bfba1..0e72d3df 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot2PictureRecorder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot2PictureRecorder.java @@ -10,7 +10,6 @@ import android.os.Build; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; -import com.otaliastudios.cameraview.CameraLogger; import com.otaliastudios.cameraview.PictureResult; import com.otaliastudios.cameraview.engine.Camera2Engine; import com.otaliastudios.cameraview.engine.action.Action; @@ -44,8 +43,6 @@ import com.otaliastudios.cameraview.size.AspectRatio; @RequiresApi(Build.VERSION_CODES.LOLLIPOP) public class Snapshot2PictureRecorder extends SnapshotGlPictureRecorder { - private final static String TAG = Snapshot2PictureRecorder.class.getSimpleName(); - private final static CameraLogger LOG = CameraLogger.create(TAG); private final static long LOCK_TIMEOUT = 2500; private class FlashAction extends BaseAction { diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java index cdb81e18..35b76a37 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java @@ -9,7 +9,6 @@ import android.opengl.EGLContext; import android.opengl.Matrix; import android.os.Build; -import com.otaliastudios.cameraview.CameraLogger; import com.otaliastudios.cameraview.PictureResult; import com.otaliastudios.cameraview.internal.egl.EglBaseSurface; import com.otaliastudios.cameraview.overlay.Overlay; @@ -54,10 +53,7 @@ import android.view.Surface; * 2. We have overlays to be drawn - we don't want to draw them on the preview surface, * not even for a frame. */ -public class SnapshotGlPictureRecorder extends PictureRecorder { - - private static final String TAG = SnapshotGlPictureRecorder.class.getSimpleName(); - private static final CameraLogger LOG = CameraLogger.create(TAG); +public class SnapshotGlPictureRecorder extends SnapshotPictureRecorder { private CameraEngine mEngine; private GlCameraPreview mPreview; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotPictureRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotPictureRecorder.java new file mode 100644 index 00000000..52d9e9fe --- /dev/null +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotPictureRecorder.java @@ -0,0 +1,20 @@ +package com.otaliastudios.cameraview.picture; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.otaliastudios.cameraview.CameraLogger; +import com.otaliastudios.cameraview.PictureResult; + +/** + * Helps with logging. + */ +public abstract class SnapshotPictureRecorder extends PictureRecorder { + private static final String TAG = SnapshotPictureRecorder.class.getSimpleName(); + protected static final CameraLogger LOG = CameraLogger.create(TAG); + + public SnapshotPictureRecorder(@NonNull PictureResult.Stub stub, + @Nullable PictureResultListener listener) { + super(stub, listener); + } +} diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/video/Full1VideoRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/video/Full1VideoRecorder.java index 7716b9f4..f3b6e740 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/video/Full1VideoRecorder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/video/Full1VideoRecorder.java @@ -3,9 +3,7 @@ package com.otaliastudios.cameraview.video; import android.hardware.Camera; import android.media.CamcorderProfile; import android.media.MediaRecorder; -import android.util.Log; -import com.otaliastudios.cameraview.CameraLogger; import com.otaliastudios.cameraview.VideoResult; import com.otaliastudios.cameraview.engine.Camera1Engine; import com.otaliastudios.cameraview.internal.utils.CamcorderProfiles; @@ -19,9 +17,6 @@ import androidx.annotation.NonNull; */ public class Full1VideoRecorder extends FullVideoRecorder { - private static final String TAG = Full1VideoRecorder.class.getSimpleName(); - private static final CameraLogger LOG = CameraLogger.create(TAG); - private final Camera1Engine mEngine; private final Camera mCamera; private final int mCameraId; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/video/Full2VideoRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/video/Full2VideoRecorder.java index 395b6dfb..71e7e47a 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/video/Full2VideoRecorder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/video/Full2VideoRecorder.java @@ -1,19 +1,14 @@ package com.otaliastudios.cameraview.video; -import android.annotation.SuppressLint; import android.hardware.camera2.CaptureRequest; -import android.hardware.camera2.CaptureResult; -import android.hardware.camera2.TotalCaptureResult; import android.media.CamcorderProfile; import android.media.MediaRecorder; import android.os.Build; import android.view.Surface; -import com.otaliastudios.cameraview.CameraLogger; import com.otaliastudios.cameraview.VideoResult; import com.otaliastudios.cameraview.engine.Camera2Engine; import com.otaliastudios.cameraview.engine.action.Action; -import com.otaliastudios.cameraview.engine.action.ActionCallback; import com.otaliastudios.cameraview.engine.action.ActionHolder; import com.otaliastudios.cameraview.engine.action.BaseAction; import com.otaliastudios.cameraview.engine.action.CompletionCallback; @@ -31,9 +26,6 @@ import androidx.annotation.RequiresApi; @RequiresApi(Build.VERSION_CODES.LOLLIPOP) public class Full2VideoRecorder extends FullVideoRecorder { - private static final String TAG = Full2VideoRecorder.class.getSimpleName(); - private static final CameraLogger LOG = CameraLogger.create(TAG); - private ActionHolder mHolder; private final String mCameraId; private Surface mInputSurface; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/video/FullVideoRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/video/FullVideoRecorder.java index 7322d0f7..b44dae15 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/video/FullVideoRecorder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/video/FullVideoRecorder.java @@ -30,7 +30,7 @@ import androidx.annotation.Nullable; public abstract class FullVideoRecorder extends VideoRecorder { private static final String TAG = FullVideoRecorder.class.getSimpleName(); - private static final CameraLogger LOG = CameraLogger.create(TAG); + protected static final CameraLogger LOG = CameraLogger.create(TAG); @SuppressWarnings("WeakerAccess") protected MediaRecorder mMediaRecorder; private CamcorderProfile mProfile;