From 350ca059b96a148585005a1b30d6e3fe6b6e44ed Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 22 Oct 2019 10:16:14 -0400 Subject: [PATCH] Pick camera resolution based on screen resolution. --- .../securesms/mediasend/camerax/CameraXModule.java | 7 +++++-- .../securesms/mediasend/camerax/CameraXUtil.java | 5 +++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/org/thoughtcrime/securesms/mediasend/camerax/CameraXModule.java b/src/org/thoughtcrime/securesms/mediasend/camerax/CameraXModule.java index e5f35b488..3d6d9983c 100644 --- a/src/org/thoughtcrime/securesms/mediasend/camerax/CameraXModule.java +++ b/src/org/thoughtcrime/securesms/mediasend/camerax/CameraXModule.java @@ -19,6 +19,7 @@ package org.thoughtcrime.securesms.mediasend.camerax; import android.Manifest.permission; import android.annotation.SuppressLint; import android.content.Context; +import android.content.res.Resources; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.SurfaceTexture; @@ -231,11 +232,13 @@ final class CameraXModule { // Begin Signal Custom Code Block Rational targetAspectRatio; + int resolution = CameraXUtil.getIdealResolution(Resources.getSystem().getDisplayMetrics().widthPixels, Resources.getSystem().getDisplayMetrics().heightPixels); + Log.i(TAG, "Ideal resolution: " + resolution); if (getCaptureMode() == CameraXView.CaptureMode.IMAGE) { - mImageCaptureConfigBuilder.setTargetResolution(CameraXUtil.buildResolutionForRatio(1920, ASPECT_RATIO_4_3, isDisplayPortrait)); + mImageCaptureConfigBuilder.setTargetResolution(CameraXUtil.buildResolutionForRatio(resolution, ASPECT_RATIO_4_3, isDisplayPortrait)); targetAspectRatio = isDisplayPortrait ? ASPECT_RATIO_3_4 : ASPECT_RATIO_4_3; } else { - mImageCaptureConfigBuilder.setTargetResolution(CameraXUtil.buildResolutionForRatio(1920, ASPECT_RATIO_16_9, isDisplayPortrait)); + mImageCaptureConfigBuilder.setTargetResolution(CameraXUtil.buildResolutionForRatio(resolution, ASPECT_RATIO_16_9, isDisplayPortrait)); targetAspectRatio = isDisplayPortrait ? ASPECT_RATIO_9_16 : ASPECT_RATIO_16_9; } mImageCaptureConfigBuilder.setCaptureMode(CameraXUtil.getOptimalCaptureMode()); diff --git a/src/org/thoughtcrime/securesms/mediasend/camerax/CameraXUtil.java b/src/org/thoughtcrime/securesms/mediasend/camerax/CameraXUtil.java index 32277c03b..8b4ed6dba 100644 --- a/src/org/thoughtcrime/securesms/mediasend/camerax/CameraXUtil.java +++ b/src/org/thoughtcrime/securesms/mediasend/camerax/CameraXUtil.java @@ -101,6 +101,11 @@ public class CameraXUtil { : ImageCapture.CaptureMode.MIN_LATENCY; } + public static int getIdealResolution(int displayWidth, int displayHeight) { + int maxDisplay = Math.max(displayWidth, displayHeight); + return Math.max(maxDisplay, 1920); + } + @TargetApi(21) public static @NonNull Size buildResolutionForRatio(int longDimension, @NonNull Rational ratio, boolean isPortrait) { int shortDimension = longDimension * ratio.getDenominator() / ratio.getNumerator();