From eb2491ea219eb6fb2f541d31e449327e5ab3b5c7 Mon Sep 17 00:00:00 2001 From: Gabriel Low <73009315+gabriellow1111@users.noreply.github.com> Date: Tue, 8 Sep 2026 11:42:22 +0800 Subject: [PATCH] Merged Jw -> (Qi Ying -> Harine) --- .../jnicpp/bowling/BowlingCameraActivity.kt | 14 ++++++++++---- .../com/example/jnicpp/bowling/CameraViewModel.kt | 2 +- app/src/main/res/values/strings.xml | 10 ++++++++++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/example/jnicpp/bowling/BowlingCameraActivity.kt b/app/src/main/java/com/example/jnicpp/bowling/BowlingCameraActivity.kt index 7fdbf8e..a7b9cf0 100644 --- a/app/src/main/java/com/example/jnicpp/bowling/BowlingCameraActivity.kt +++ b/app/src/main/java/com/example/jnicpp/bowling/BowlingCameraActivity.kt @@ -70,7 +70,7 @@ class BowlingCameraActivity : AppCompatActivity(), CameraXController.Callback { private lateinit var stepCounterUi: StepCounterUiController // class for FeedbackUI private lateinit var feedbackUI: FeedbackUI - private val stepLabels = listOf( + private val stepLabels = listOf( R.string.pose_phase_waiting, R.string.pose_phase_starting_stance, R.string.first_step, @@ -82,7 +82,7 @@ class BowlingCameraActivity : AppCompatActivity(), CameraXController.Callback { private var currentStepIndex = 0 private val permissionLauncher = - registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { _ -> + registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { _: Map -> val granted = CameraPermissions.allGranted(this) viewModel.onPermissionsResult(granted) if (granted) { @@ -220,7 +220,8 @@ class BowlingCameraActivity : AppCompatActivity(), CameraXController.Callback { } launch { viewModel.errorEvents.collect { message -> - Toast.makeText(this@BowlingCameraActivity, message, Toast.LENGTH_LONG).show() + Toast.makeText(this@BowlingCameraActivity, message, Toast.LENGTH_LONG) + .show() } } launch { @@ -232,7 +233,12 @@ class BowlingCameraActivity : AppCompatActivity(), CameraXController.Callback { } } launch { - viewModel.handRaiseProgress.collect { progress -> stepCounterUi.renderHandRaiseProgress(progress) } + viewModel.handRaiseProgress.collect { progress -> + stepCounterUi.renderHandRaiseProgress( + progress + ) + } + } // Deliberately its own collector, independent of stepEvents // above -- delivery-phase feedback and step counting are // separate concerns (see PosePhaseDetector's class doc). diff --git a/app/src/main/java/com/example/jnicpp/bowling/CameraViewModel.kt b/app/src/main/java/com/example/jnicpp/bowling/CameraViewModel.kt index 8f0e1fc..4d7f332 100644 --- a/app/src/main/java/com/example/jnicpp/bowling/CameraViewModel.kt +++ b/app/src/main/java/com/example/jnicpp/bowling/CameraViewModel.kt @@ -71,7 +71,7 @@ class CameraViewModel(application: Application) : AndroidViewModel(application) // live preview with pose overlay on but not recording doesn't feed it. private val stepCountingSession = StepCountingSession() /** @brief Time-ordered pose samples buffered for the current/most recent recording session. */ - val poseFrames: List get() = poseFrameBuffer + val poseFrames: List get() = stepCountingSession.poseFrames // Extra SMA smoothing for ankle/hip landmarks specifically, on top of // PoseLandmarkSmoother's per-frame EMA -- see AnkleHipMovingAverageFilter. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 33f3b42..cd45204 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -44,4 +44,14 @@ Save Settings saved Enter a valid number for every field + Starting Stance + Waiting for stance… + Step 1 + Step 2 + Step 3 + Step 4 + End Position + Approach + Pushaway + Torso: %1$s | L Knee: %2$s | R Knee: %3$s | L Elbow: %4$s | R Elbow: %5$s \ No newline at end of file