diff --git a/app/src/main/java/no/naiv/tiltshift/camera/CameraManager.kt b/app/src/main/java/no/naiv/tiltshift/camera/CameraManager.kt index b2d4e6c..3717693 100644 --- a/app/src/main/java/no/naiv/tiltshift/camera/CameraManager.kt +++ b/app/src/main/java/no/naiv/tiltshift/camera/CameraManager.kt @@ -73,9 +73,14 @@ class CameraManager(private val context: Context) { val cameraProviderFuture = ProcessCameraProvider.getInstance(context) cameraProviderFuture.addListener({ - cameraProvider = cameraProviderFuture.get() - lensController.initialize(cameraProvider?.availableCameraInfos ?: emptyList()) - bindCameraUseCases(lifecycleOwner) + try { + cameraProvider = cameraProviderFuture.get() + lensController.initialize(cameraProvider?.availableCameraInfos ?: emptyList()) + bindCameraUseCases(lifecycleOwner) + } catch (e: Exception) { + Log.e(TAG, "CameraX initialization failed", e) + _error.value = "Camera could not initialize. Please restart the app." + } }, ContextCompat.getMainExecutor(context)) } @@ -129,9 +134,12 @@ class CameraManager(private val context: Context) { provideSurface(request) } + } catch (e: SecurityException) { + Log.e(TAG, "Camera permission denied at runtime", e) + _error.value = "Camera permission was revoked. Please grant it in Settings." } catch (e: Exception) { Log.e(TAG, "Camera binding failed", e) - _error.value = "Camera failed: ${e.message}" + _error.value = "Camera could not start. Please try again or restart the app." } }