diff --git a/android/src/main/java/com/mrousavy/camera/utils/CameraDevice+createCaptureSession.kt b/android/src/main/java/com/mrousavy/camera/utils/CameraDevice+createCaptureSession.kt index 78c2ed729b..35a86e0693 100644 --- a/android/src/main/java/com/mrousavy/camera/utils/CameraDevice+createCaptureSession.kt +++ b/android/src/main/java/com/mrousavy/camera/utils/CameraDevice+createCaptureSession.kt @@ -80,8 +80,8 @@ fun supportsOutputType(characteristics: CameraCharacteristics, outputType: Outpu fun getMaxRecordResolution(cameraId: String): Size { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { val profiles = CamcorderProfile.getAll(cameraId, CamcorderProfile.QUALITY_HIGH) - if (profiles != null) { - val highestProfile = profiles.videoProfiles.maxBy { it.width * it.height } + val highestProfile = profiles?.videoProfiles?.maxBy { it.width * it.height } + if (highestProfile != null) { return Size(highestProfile.width, highestProfile.height) } } diff --git a/android/src/main/java/com/mrousavy/camera/utils/CameraDeviceDetails.kt b/android/src/main/java/com/mrousavy/camera/utils/CameraDeviceDetails.kt index 737e20159b..43c48b7eb1 100644 --- a/android/src/main/java/com/mrousavy/camera/utils/CameraDeviceDetails.kt +++ b/android/src/main/java/com/mrousavy/camera/utils/CameraDeviceDetails.kt @@ -147,7 +147,8 @@ class CameraDeviceDetails(private val cameraManager: CameraManager, private val val outputSizes = cameraConfig.getOutputSizes(outputFormat).toMutableList() if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // High resolution Photo sizes that are not able to run at 20FPS+ - outputSizes.addAll(cameraConfig.getHighResolutionOutputSizes(outputFormat)) + val highResSizes = cameraConfig.getHighResolutionOutputSizes(outputFormat) + if (highResSizes != null) outputSizes.addAll(highResSizes) } outputSizes.forEach { outputSize -> val frameDuration = cameraConfig.getOutputMinFrameDuration(outputFormat, outputSize) diff --git a/android/src/main/java/com/mrousavy/camera/utils/Size+closestToOrMax.kt b/android/src/main/java/com/mrousavy/camera/utils/Size+closestToOrMax.kt index 5b7d9a3078..3d93f238e5 100644 --- a/android/src/main/java/com/mrousavy/camera/utils/Size+closestToOrMax.kt +++ b/android/src/main/java/com/mrousavy/camera/utils/Size+closestToOrMax.kt @@ -1,10 +1,11 @@ package com.mrousavy.camera.utils import android.util.Size +import kotlin.math.abs fun Array.closestToOrMax(size: Size?): Size { return if (size != null) { - this.minBy { (it.width - size.width) + (it.height - size.height) } + this.minBy { abs(it.width - size.width) + abs(it.height - size.height) } } else { this.maxBy { it.width * it.height } }