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"