From 5537230b49cb0dcb0dc1142339071dfa4e3eee5c Mon Sep 17 00:00:00 2001 From: Sam Hos Date: Wed, 5 Jun 2024 17:36:01 +0200 Subject: [PATCH] Changes --- .../fitbot/exercise/ExerciseManager.java | 2 +- .../fitbot/ui/activities/FitnessActivity.java | 37 +++++++++++-------- .../util/processing/InputProcessor.java | 8 +++- .../src/main/res/layout/activity_fitness.xml | 4 +- 4 files changed, 31 insertions(+), 20 deletions(-) diff --git a/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/ExerciseManager.java b/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/ExerciseManager.java index a4edc9e..6998573 100644 --- a/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/ExerciseManager.java +++ b/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/ExerciseManager.java @@ -37,7 +37,7 @@ public class ExerciseManager { }; public static final int DEFAULT_EXERCISE_REPETITIONS = 10; - public static final float EXERCISE_ERROR_MARGIN = 1.0f; + public static final float EXERCISE_ERROR_MARGIN = 1.5f; public static final float EXERCISE_TIME_SCALING_FACTOR = 1.0f; // Fields representing the statistics of the user diff --git a/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/activities/FitnessActivity.java b/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/activities/FitnessActivity.java index 0c1bc1d..4b5cc40 100644 --- a/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/activities/FitnessActivity.java +++ b/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/activities/FitnessActivity.java @@ -41,7 +41,7 @@ public class FitnessActivity extends RobotActivity implements RobotLifecycleCall // Progress circle for the exercises private ProgressBar progressCircle; private TextView progressText; - private int progress = 0; + private int progress = 1; private final int maxProgress = 10; // Exercise status element data @@ -178,6 +178,7 @@ public class FitnessActivity extends RobotActivity implements RobotLifecycleCall // Start checking for user movement once the video has loaded this.motionProcessor.startListening(); this.motionProcessor.startCheckingUserMovement(); +// this.motionProcessor.setRecording(true, 4.f); return true; } @@ -204,7 +205,7 @@ public class FitnessActivity extends RobotActivity implements RobotLifecycleCall public void playVideo(VideoView videoView, Context context) { // Set up the video player if (videoView != null) { - videoView.setVideoURI(Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.arm_raises)); + videoView.setVideoPath(exerciseVideoUrl); videoView.start(); } else { Log.e("FitnessActivity", "VideoView is null. Check your layout XML."); @@ -273,19 +274,25 @@ public class FitnessActivity extends RobotActivity implements RobotLifecycleCall public void triggerColorBurst(boolean isGoodRep) { - int circleId = isGoodRep ? R.drawable.progress_circle_good : R.drawable.progress_circle_bad; - int soundId = isGoodRep ? R.raw.good_sound : R.raw.wrong_sound; - progressCircle.setProgressDrawable(ContextCompat.getDrawable(this, circleId)); - // MediaPlayer.create(this, soundId).start(); + Log.i("InputProcessor", "Color Burst"); - ObjectAnimator animator = ObjectAnimator.ofFloat(progressCircle, "alpha", 1f, 0f, 1f); - animator.setDuration(700); // Burst duration - animator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - progressCircle.setProgressDrawable(ContextCompat.getDrawable(FitnessActivity.this, R.drawable.progress_circle)); - } - }); - animator.start(); + try { + int circleId = isGoodRep ? R.drawable.progress_circle_good : R.drawable.progress_circle_bad; + int soundId = isGoodRep ? R.raw.good_sound : R.raw.wrong_sound; + progressCircle.setProgressDrawable(ContextCompat.getDrawable(this, circleId)); + // MediaPlayer.create(this, soundId).start(); + + ObjectAnimator animator = ObjectAnimator.ofFloat(progressCircle, "alpha", 1f, 0f, 1f); + animator.setDuration(700); // Burst duration + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + progressCircle.setProgressDrawable(ContextCompat.getDrawable(FitnessActivity.this, R.drawable.progress_circle)); + } + }); + animator.start(); + } catch (Exception e) { + e.printStackTrace(); + } } } \ No newline at end of file diff --git a/code/src/Fitbot/app/src/main/java/com/example/fitbot/util/processing/InputProcessor.java b/code/src/Fitbot/app/src/main/java/com/example/fitbot/util/processing/InputProcessor.java index 8d5a471..30f9139 100644 --- a/code/src/Fitbot/app/src/main/java/com/example/fitbot/util/processing/InputProcessor.java +++ b/code/src/Fitbot/app/src/main/java/com/example/fitbot/util/processing/InputProcessor.java @@ -108,8 +108,11 @@ public class InputProcessor { while (this.exercisesRemaining > 0) { - if ( this.totalChecks == 0) + if ( this.totalChecks == 0 || this.selfRotationVectorPaths == null + || this.selfRotationVectorPaths.length == 0 + || this.selfRotationVectorPaths[0].size() == 0) continue; + boolean isFaulty = this.isFaultyMovement(); Log.i("InputProcessor", "Movement checked: " + (isFaulty ? "Faulty" : "Good")); @@ -170,7 +173,7 @@ public class InputProcessor { Log.i("InputProcessor", "Repetition time: " + exercise.exerciseTimeInSeconds); this.exerciseRepetitionDurationInSeconds = Math.max(this.exerciseRepetitionDurationInSeconds, 2); - this.errorCheckInterval_s = exercise.exerciseTimeInSeconds / 6.0f; + this.errorCheckInterval_s = exercise.exerciseTimeInSeconds / 3.0f; Log.i("InputProcessor", "Exercise error checking interval: " + this.errorCheckInterval_s); } @@ -256,6 +259,7 @@ public class InputProcessor { this.parentActivity.runOnUiThread(() -> { NavigationManager.navigateToActivity(this.parentActivity, EndScreenActivity.class); }); + return; } Log.i("MotionProcessor", "Fetching exercise data."); diff --git a/code/src/Fitbot/app/src/main/res/layout/activity_fitness.xml b/code/src/Fitbot/app/src/main/res/layout/activity_fitness.xml index 261cb35..40456d7 100644 --- a/code/src/Fitbot/app/src/main/res/layout/activity_fitness.xml +++ b/code/src/Fitbot/app/src/main/res/layout/activity_fitness.xml @@ -113,7 +113,7 @@ android:layout_gravity="center" android:indeterminate="false" android:max="10" - android:progress="0" + android:progress="1" android:progressDrawable="@drawable/progress_circle" /> + android:text="1/10" />