diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java index 7c6f9b52..df684901 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java @@ -72,7 +72,7 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera */ @Override public void onSurfaceAvailable() { - LOG.i("onSurfaceAvailable:", "Size is", mPreview.getOutputSurfaceSize()); + LOG.i("onSurfaceAvailable:", "Size is", getSurfaceSize(REF_VIEW)); schedule(null, false, new Runnable() { @Override public void run() { @@ -90,7 +90,7 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera */ @Override public void onSurfaceChanged() { - LOG.i("onSurfaceChanged, size is", mPreview.getOutputSurfaceSize()); + LOG.i("onSurfaceChanged, size is", getSurfaceSize(REF_VIEW)); schedule(null, true, new Runnable() { @Override public void run() { diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java index cfedbb9c..3c39b10c 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java @@ -493,21 +493,30 @@ abstract class CameraController implements return offset(reference1, reference2) % 180 != 0; } + @Nullable final Size getPictureSize(@SuppressWarnings("SameParameterValue") int reference) { if (mCaptureSize == null || mMode == Mode.VIDEO) return null; return flip(REF_SENSOR, reference) ? mCaptureSize.flip() : mCaptureSize; } + @Nullable final Size getVideoSize(@SuppressWarnings("SameParameterValue") int reference) { if (mCaptureSize == null || mMode == Mode.PICTURE) return null; return flip(REF_SENSOR, reference) ? mCaptureSize.flip() : mCaptureSize; } + @Nullable final Size getPreviewSize(int reference) { if (mPreviewSize == null) return null; return flip(REF_SENSOR, reference) ? mPreviewSize.flip() : mPreviewSize; } + @Nullable + final Size getSurfaceSize(int reference) { + if (mPreview == null) return null; + return flip(REF_VIEW, reference) ? mPreview.getOutputSurfaceSize().flip() : mPreview.getOutputSurfaceSize(); + } + //endregion @@ -561,7 +570,7 @@ abstract class CameraController implements // Create our own default selector, which will be used if the external mPreviewSizeSelector // is null, or if it fails in finding a size. - Size targetMinSize = mPreview.getOutputSurfaceSize(); + Size targetMinSize = getSurfaceSize(REF_VIEW); AspectRatio targetRatio = AspectRatio.of(mCaptureSize.getWidth(), mCaptureSize.getHeight()); if (flip) targetRatio = targetRatio.inverse(); LOG.i("size:", "computePreviewSize:", "targetRatio:", targetRatio, "targetMinSize:", targetMinSize); diff --git a/demo/src/main/java/com/otaliastudios/cameraview/demo/PicturePreviewActivity.java b/demo/src/main/java/com/otaliastudios/cameraview/demo/PicturePreviewActivity.java index 2805c027..97fba873 100644 --- a/demo/src/main/java/com/otaliastudios/cameraview/demo/PicturePreviewActivity.java +++ b/demo/src/main/java/com/otaliastudios/cameraview/demo/PicturePreviewActivity.java @@ -2,8 +2,11 @@ package com.otaliastudios.cameraview.demo; import android.app.Activity; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.os.Bundle; import androidx.annotation.Nullable; + +import android.util.Log; import android.widget.ImageView; import com.otaliastudios.cameraview.AspectRatio; @@ -45,6 +48,18 @@ public class PicturePreviewActivity extends Activity { imageView.setImageBitmap(bitmap); } }); + + if (result.isSnapshot()) { + // Log the real size for debugging reason. + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + BitmapFactory.decodeByteArray(result.getData(), 0, result.getData().length, options); + if (result.getRotation() % 180 != 0) { + Log.e("PicturePreview", "The picture full size is " + result.getSize().getHeight() + "x" + result.getSize().getWidth()); + } else { + Log.e("PicturePreview", "The picture full size is " + result.getSize().getWidth() + "x" + result.getSize().getHeight()); + } + } } @Override diff --git a/demo/src/main/java/com/otaliastudios/cameraview/demo/VideoPreviewActivity.java b/demo/src/main/java/com/otaliastudios/cameraview/demo/VideoPreviewActivity.java index cee2d78f..d7921671 100644 --- a/demo/src/main/java/com/otaliastudios/cameraview/demo/VideoPreviewActivity.java +++ b/demo/src/main/java/com/otaliastudios/cameraview/demo/VideoPreviewActivity.java @@ -5,6 +5,8 @@ import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import androidx.annotation.Nullable; + +import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.MediaController; @@ -73,6 +75,11 @@ public class VideoPreviewActivity extends Activity { lp.height = (int) (viewWidth * (videoHeight / videoWidth)); videoView.setLayoutParams(lp); playVideo(); + + if (result.isSnapshot()) { + // Log the real size for debugging reason. + Log.e("VideoPreview", "The video full size is " + videoWidth + "x" + videoHeight); + } } }); }