From 14dd71bf784d646e8105191b966a5249a4e1e077 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 11 Oct 2022 15:20:43 -0400 Subject: [PATCH] Prevent crash from poor implementation of camera apis. --- .../securesms/mediasend/camerax/CameraXUtil.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/camerax/CameraXUtil.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/camerax/CameraXUtil.java index 1e86eda02..a0abdab23 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/camerax/CameraXUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/camerax/CameraXUtil.java @@ -26,10 +26,10 @@ import androidx.camera.core.CameraSelector; import androidx.camera.core.ImageCapture; import androidx.camera.core.ImageProxy; +import org.signal.core.util.Stopwatch; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.util.BitmapDecodingException; import org.thoughtcrime.securesms.util.BitmapUtil; -import org.signal.core.util.Stopwatch; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -218,8 +218,13 @@ public class CameraXUtil { int supported = maxHardwareLevel(); for (String cameraId : cameraManager.getCameraIdList()) { - CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(cameraId); - Integer hwLevel = characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL); + Integer hwLevel = null; + + try { + hwLevel = cameraManager.getCameraCharacteristics(cameraId).get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL); + } catch (NullPointerException e) { + // redmi device crash, assume lowest + } if (hwLevel == null || hwLevel == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY) { return CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY;