diff --git a/code/src/Fitbot/.idea/misc.xml b/code/src/Fitbot/.idea/misc.xml
index 44c9792..da1ec46 100644
--- a/code/src/Fitbot/.idea/misc.xml
+++ b/code/src/Fitbot/.idea/misc.xml
@@ -24,6 +24,7 @@
+
@@ -33,6 +34,9 @@
+
+
+
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 4dc2472..9c79a39 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
@@ -1,18 +1,20 @@
package com.example.fitbot.ui.activities;
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ObjectAnimator;
import android.app.Dialog;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.media.MediaPlayer;
-import android.net.Uri;
import android.os.Bundle;
+import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.view.View;
-import android.view.WindowManager;
import android.widget.Button;
import android.widget.VideoView;
@@ -38,6 +40,12 @@ public class FitnessActivity extends RobotActivity implements RobotLifecycleCall
private InputProcessor motionProcessor;
private Exercise currentExercise;
+ // Progress circle for the exercises
+ private ProgressBar progressCircle;
+ private TextView progressText;
+ private int progress = 0;
+ private final int maxProgress = 10;
+
// Exercise status element data
private TextView exerciseMuscleGroupTextView;
private TextView exerciseNameTextView;
@@ -76,6 +84,12 @@ public class FitnessActivity extends RobotActivity implements RobotLifecycleCall
// Set the repetition count for the exercise
EXERCISE_REP = 1;
+ progressCircle = findViewById(R.id.progressCircle);
+ progressText = findViewById(R.id.progressText);
+
+ progressCircle.setMax(maxProgress);
+ updateProgress();
+
// Set color of loading circle
ProgressBar loadingCircle = findViewById(R.id.loadingCircle);
loadingCircle.setIndeterminateTintList(ColorStateList.valueOf(Color.RED));
@@ -242,4 +256,37 @@ public class FitnessActivity extends RobotActivity implements RobotLifecycleCall
});
dialog.show();
}
+
+ public void incrementProgress(View view) {
+ if (progress < maxProgress) {
+ progress++;
+ triggerColorBurst(false);
+ updateProgress();
+ }
+ }
+
+ private void updateProgress() {
+ progressCircle.setProgress(progress);
+ progressText.setText(progress + "/" + maxProgress);
+ }
+
+ private void triggerColorBurst(boolean isGoodRep) {
+
+ if (isGoodRep) {
+ progressCircle.setProgressDrawable(ContextCompat.getDrawable(this, R.drawable.progress_circle_good));
+ } else {
+ progressCircle.setProgressDrawable(ContextCompat.getDrawable(this, R.drawable.progress_circle_bad));
+ }
+
+ ObjectAnimator animator = ObjectAnimator.ofFloat(progressCircle, "alpha", 1f, 0f, 1f);
+ animator.setDuration(500); // Burst duration
+ animator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ progressCircle.setProgressDrawable(ContextCompat.getDrawable(FitnessActivity.this, R.drawable.progress_circle));
+ }
+ });
+ animator.start();
+ }
+
}
\ No newline at end of file
diff --git a/code/src/Fitbot/app/src/main/res/drawable/border_background_circle.xml b/code/src/Fitbot/app/src/main/res/drawable/border_background_circle.xml
new file mode 100644
index 0000000..df55912
--- /dev/null
+++ b/code/src/Fitbot/app/src/main/res/drawable/border_background_circle.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/code/src/Fitbot/app/src/main/res/drawable/progress_circle.xml b/code/src/Fitbot/app/src/main/res/drawable/progress_circle.xml
new file mode 100644
index 0000000..590b046
--- /dev/null
+++ b/code/src/Fitbot/app/src/main/res/drawable/progress_circle.xml
@@ -0,0 +1,18 @@
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/code/src/Fitbot/app/src/main/res/drawable/progress_circle_bad.xml b/code/src/Fitbot/app/src/main/res/drawable/progress_circle_bad.xml
new file mode 100644
index 0000000..b53b748
--- /dev/null
+++ b/code/src/Fitbot/app/src/main/res/drawable/progress_circle_bad.xml
@@ -0,0 +1,18 @@
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/code/src/Fitbot/app/src/main/res/drawable/progress_circle_good.xml b/code/src/Fitbot/app/src/main/res/drawable/progress_circle_good.xml
new file mode 100644
index 0000000..d291a88
--- /dev/null
+++ b/code/src/Fitbot/app/src/main/res/drawable/progress_circle_good.xml
@@ -0,0 +1,18 @@
+
+
+ -
+
+
+
+
+
+
+
+
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 c013ce3..76f10ef 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
@@ -97,39 +97,44 @@
android:textAlignment="center" />
-
+
+
+ android:background="@drawable/border_background_circle">
+
+
-
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerInParent="true"
+ android:text="0/10" />
-
-
-
-
+
6dp
+
+
\ No newline at end of file
diff --git a/code/src/Fitbot/settings.gradle b/code/src/Fitbot/settings.gradle
index ffde70b..885c0be 100644
--- a/code/src/Fitbot/settings.gradle
+++ b/code/src/Fitbot/settings.gradle
@@ -10,9 +10,7 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
- maven {
- url 'https://qisdk.softbankrobotics.com/sdk/maven/'
- }
+ maven { url 'https://qisdk.softbankrobotics.com/sdk/maven/' }
}
}
rootProject.name = "Fitbot"