From 491ef417bd66eb10272d2cd7b1feafda5b261b24 Mon Sep 17 00:00:00 2001 From: Eli Atlas Date: Fri, 26 Sep 2025 13:27:14 +0300 Subject: [PATCH 1/2] fix: resolve null pointer issue in Android CameraFragment orientation handling - Add null safety check for orientationHelper before accessing - Prevents crash when reopening workout/assessment on Android --- .../main/java/com/tsmediapipe/fragment/CameraFragment.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/android/src/main/java/com/tsmediapipe/fragment/CameraFragment.kt b/android/src/main/java/com/tsmediapipe/fragment/CameraFragment.kt index d459505..9edf829 100644 --- a/android/src/main/java/com/tsmediapipe/fragment/CameraFragment.kt +++ b/android/src/main/java/com/tsmediapipe/fragment/CameraFragment.kt @@ -196,12 +196,12 @@ class CameraFragment : Fragment(), PoseLandmarkerHelper.LandmarkerListener { CameraSelector.Builder().requireLensFacing(cameraFacing).build() preview = Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_4_3) - .setTargetRotation(fragmentCameraBinding.viewFinder.display.rotation) + .setTargetRotation(fragmentCameraBinding.viewFinder.display?.rotation ?: 0) .build() imageAnalyzer = ImageAnalysis.Builder().setTargetAspectRatio(AspectRatio.RATIO_4_3) - .setTargetRotation(fragmentCameraBinding.viewFinder.display.rotation) + .setTargetRotation(fragmentCameraBinding.viewFinder.display?.rotation ?: 0) .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) .setOutputImageFormat(ImageAnalysis.OUTPUT_IMAGE_FORMAT_RGBA_8888) .build() @@ -249,8 +249,9 @@ class CameraFragment : Fragment(), PoseLandmarkerHelper.LandmarkerListener { override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) - imageAnalyzer?.targetRotation = - fragmentCameraBinding.viewFinder.display.rotation + fragmentCameraBinding.viewFinder.display?.let { display -> + imageAnalyzer?.targetRotation = display.rotation + } } override fun onResults( From 5578a8f9f83f88c70831b1e068b3329b0c268501 Mon Sep 17 00:00:00 2001 From: Eli Atlas Date: Fri, 26 Sep 2025 14:10:46 +0300 Subject: [PATCH 2/2] fix: handle null camera binding to prevent NPE on Android Replace fragmentCameraBinding (non-null asserted) with _fragmentCameraBinding? to safely access display rotation during camera initialization --- .../main/java/com/tsmediapipe/fragment/CameraFragment.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/com/tsmediapipe/fragment/CameraFragment.kt b/android/src/main/java/com/tsmediapipe/fragment/CameraFragment.kt index 9edf829..8b61fa3 100644 --- a/android/src/main/java/com/tsmediapipe/fragment/CameraFragment.kt +++ b/android/src/main/java/com/tsmediapipe/fragment/CameraFragment.kt @@ -196,12 +196,12 @@ class CameraFragment : Fragment(), PoseLandmarkerHelper.LandmarkerListener { CameraSelector.Builder().requireLensFacing(cameraFacing).build() preview = Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_4_3) - .setTargetRotation(fragmentCameraBinding.viewFinder.display?.rotation ?: 0) + .setTargetRotation(_fragmentCameraBinding?.viewFinder?.display?.rotation ?: 0) .build() imageAnalyzer = ImageAnalysis.Builder().setTargetAspectRatio(AspectRatio.RATIO_4_3) - .setTargetRotation(fragmentCameraBinding.viewFinder.display?.rotation ?: 0) + .setTargetRotation(_fragmentCameraBinding?.viewFinder?.display?.rotation ?: 0) .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) .setOutputImageFormat(ImageAnalysis.OUTPUT_IMAGE_FORMAT_RGBA_8888) .build() @@ -249,7 +249,7 @@ class CameraFragment : Fragment(), PoseLandmarkerHelper.LandmarkerListener { override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) - fragmentCameraBinding.viewFinder.display?.let { display -> + _fragmentCameraBinding?.viewFinder?.display?.let { display -> imageAnalyzer?.targetRotation = display.rotation } }