From 495aaa9b091b8ec62b65b47c802fe01a6ff12a53 Mon Sep 17 00:00:00 2001 From: Sam Hos Date: Fri, 7 Jun 2024 16:21:40 +0200 Subject: [PATCH] changed input script --- .../util/processing/InputProcessor.java | 45 +++++++++---------- 1 file changed, 21 insertions(+), 24 deletions(-) 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 79d3c07..4b31291 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 @@ -107,32 +107,30 @@ public class InputProcessor { // Error checking thread. (new Thread(() -> { Log.i("InputProcessor", "Movement Checking Thread started"); - + while (this.exercisesRemaining > 0) { - + if ( this.totalChecks == 0 || this.selfRotationVectorPaths == null - || this.selfRotationVectorPaths.length == 0 - || this.selfRotationVectorPaths[0].size() == 0 - || this.selfRotationVectorPaths[1].size() == 0) + || this.selfRotationVectorPaths.length == 0) continue; - + boolean isFaulty = this.isFaultyMovement(); - + Log.i("InputProcessor", "Movement checked: " + (isFaulty ? "Faulty" : "Good")); - + if (isFaulty) { this.onInadequateRepetition(); } else this.onAdequateRepetition(); - + this.checksPerformed++; - + if (this.checksPerformed >= this.totalChecks) { this.checksPerformed = 0; this.exercisesRemaining--; acquireExercise(); } - + try { Thread.sleep((long) (this.errorCheckInterval_s * 1000)); } catch (InterruptedException e) { @@ -420,10 +418,10 @@ public class InputProcessor { * Function for checking whether the last movement was faulty */ public boolean isFaultyMovement() { - boolean[] deviceMovementStatus = new boolean[selfRotationVectorPaths.length]; + boolean upMovementDetected = false; + boolean downMovementDetected = false; - for (int i = 0; i < selfRotationVectorPaths.length; i++) { - List path = selfRotationVectorPaths[i]; + for (List path : selfRotationVectorPaths) { if (path.size() < 2) { continue; // Skip if there are not enough points to compare } @@ -434,17 +432,16 @@ public class InputProcessor { float y1 = firstPoint.y; float y2 = lastPoint.y; - // Assuming that a good movement is when y2 is greater than y1 - deviceMovementStatus[i] = y2 > y1; - } + if (y2 > y1) { + upMovementDetected = true; + } else if (y2 < y1) { + downMovementDetected = true; + } - // Return true for faulty movement if any device has faulty movement - for (boolean isGood : deviceMovementStatus) { - if (!isGood) { - return true; + if (upMovementDetected && downMovementDetected) { + return false; // Return false for faulty movement if both up and down movements are detected } } - return false; - } -} + return true; // Return true for faulty movement if only up or down movement is detected + }}