diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 66e9e42..c46c077 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -26,3 +26,5 @@ -keep class org.fairscan.app.RecentDocument* { *; } -keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite { *; } +# to have at least org.opencv.core.CvException +-keep class org.opencv.core.** { *; } diff --git a/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraViewModel.kt b/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraViewModel.kt index 86e644c..b33bbf4 100644 --- a/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraViewModel.kt +++ b/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraViewModel.kt @@ -116,10 +116,15 @@ class CameraViewModel(appContainer: AppContainer): ViewModel() { fun onImageCaptured(imageProxy: ImageProxy?) { if (imageProxy != null) { viewModelScope.launch { - val source = imageProxy.toBitmap() - val page = processCapturedImage(source, imageProxy.imageInfo.rotationDegrees) - imageProxy.close() - onCaptureProcessed(page) + try { + val source = imageProxy.toBitmap() + val page = processCapturedImage(source, imageProxy.imageInfo.rotationDegrees) + imageProxy.close() + onCaptureProcessed(page) + } catch (e: RuntimeException) { + logger.e("Camera", "Failed to process captured image", e) + onCaptureProcessed(null) + } } } else { onCaptureProcessed(null)