From c9d2d89856a061d910d0fe7e5fb4595ba9f8ab9c Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 30 Jul 2024 13:38:37 +0100 Subject: [PATCH 1/2] MS-592 Fix for face unable to be captured after app resumes from background --- .../face/capture/screens/livefeedback/LiveFeedbackFragment.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/face/capture/src/main/java/com/simprints/face/capture/screens/livefeedback/LiveFeedbackFragment.kt b/face/capture/src/main/java/com/simprints/face/capture/screens/livefeedback/LiveFeedbackFragment.kt index 16a37e759b..5594613f64 100644 --- a/face/capture/src/main/java/com/simprints/face/capture/screens/livefeedback/LiveFeedbackFragment.kt +++ b/face/capture/src/main/java/com/simprints/face/capture/screens/livefeedback/LiveFeedbackFragment.kt @@ -104,7 +104,7 @@ internal class LiveFeedbackFragment : Fragment(R.layout.fragment_live_feedback) /** Initialize CameraX, and prepare to bind the camera use cases */ private fun setUpCamera() = lifecycleScope.launch { - if (::cameraExecutor.isInitialized) { + if (::cameraExecutor.isInitialized && !cameraExecutor.isShutdown) { return@launch } // Initialize our background executor @@ -118,6 +118,7 @@ internal class LiveFeedbackFragment : Fragment(R.layout.fragment_live_feedback) // Preview val preview = Preview.Builder().setTargetResolution(targetResolution).build() val cameraProvider = ProcessCameraProvider.getInstance(requireContext()).await() + cameraProvider.unbindAll() cameraProvider.bindToLifecycle( this@LiveFeedbackFragment, DEFAULT_BACK_CAMERA, preview, imageAnalyzer ) From 56285d3332d5ebf2a5274b6275017d25aebbd82e Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 30 Jul 2024 13:39:56 +0100 Subject: [PATCH 2/2] MS-592 Fix for face capture target area shifting after app resumes from background --- .../capture/screens/livefeedback/LiveFeedbackFragment.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/face/capture/src/main/java/com/simprints/face/capture/screens/livefeedback/LiveFeedbackFragment.kt b/face/capture/src/main/java/com/simprints/face/capture/screens/livefeedback/LiveFeedbackFragment.kt index 5594613f64..78fc8497a2 100644 --- a/face/capture/src/main/java/com/simprints/face/capture/screens/livefeedback/LiveFeedbackFragment.kt +++ b/face/capture/src/main/java/com/simprints/face/capture/screens/livefeedback/LiveFeedbackFragment.kt @@ -61,6 +61,7 @@ internal class LiveFeedbackFragment : Fragment(R.layout.fragment_live_feedback) private val binding by viewBinding(FragmentLiveFeedbackBinding::bind) private lateinit var screenSize: Size + private lateinit var targetResolution: Size private val launchPermissionRequest = registerForActivityResult( ActivityResultContracts.RequestPermission(), @@ -111,7 +112,9 @@ internal class LiveFeedbackFragment : Fragment(R.layout.fragment_live_feedback) cameraExecutor = Executors.newSingleThreadExecutor() // ImageAnalysis //Todo choose accurate output image resolution that respects quality,performance and face analysis SDKs https://simprints.atlassian.net/browse/CORE-2569 - val targetResolution = Size(binding.captureOverlay.width, binding.captureOverlay.height) + if (!::targetResolution.isInitialized) { + targetResolution = Size(binding.captureOverlay.width, binding.captureOverlay.height) + } val imageAnalyzer = ImageAnalysis.Builder().setTargetResolution(targetResolution) .setOutputImageFormat(OUTPUT_IMAGE_FORMAT_RGBA_8888).build() imageAnalyzer.setAnalyzer(cameraExecutor, ::analyze)