mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-09 08:18:34 +00:00
Pick camera resolution based on screen resolution.
This commit is contained in:
parent
a7cc5bdc5e
commit
350ca059b9
@ -19,6 +19,7 @@ package org.thoughtcrime.securesms.mediasend.camerax;
|
|||||||
import android.Manifest.permission;
|
import android.Manifest.permission;
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.graphics.Matrix;
|
import android.graphics.Matrix;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.graphics.SurfaceTexture;
|
import android.graphics.SurfaceTexture;
|
||||||
@ -231,11 +232,13 @@ final class CameraXModule {
|
|||||||
|
|
||||||
// Begin Signal Custom Code Block
|
// Begin Signal Custom Code Block
|
||||||
Rational targetAspectRatio;
|
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) {
|
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;
|
targetAspectRatio = isDisplayPortrait ? ASPECT_RATIO_3_4 : ASPECT_RATIO_4_3;
|
||||||
} else {
|
} 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;
|
targetAspectRatio = isDisplayPortrait ? ASPECT_RATIO_9_16 : ASPECT_RATIO_16_9;
|
||||||
}
|
}
|
||||||
mImageCaptureConfigBuilder.setCaptureMode(CameraXUtil.getOptimalCaptureMode());
|
mImageCaptureConfigBuilder.setCaptureMode(CameraXUtil.getOptimalCaptureMode());
|
||||||
|
@ -101,6 +101,11 @@ public class CameraXUtil {
|
|||||||
: ImageCapture.CaptureMode.MIN_LATENCY;
|
: 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)
|
@TargetApi(21)
|
||||||
public static @NonNull Size buildResolutionForRatio(int longDimension, @NonNull Rational ratio, boolean isPortrait) {
|
public static @NonNull Size buildResolutionForRatio(int longDimension, @NonNull Rational ratio, boolean isPortrait) {
|
||||||
int shortDimension = longDimension * ratio.getDenominator() / ratio.getNumerator();
|
int shortDimension = longDimension * ratio.getDenominator() / ratio.getNumerator();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user