05-14-2019 17:56 - edited 05-14-2019 18:04
05-14-2019 17:56 - edited 05-14-2019 18:04
Is there any way to stop an exercise after a certain amount of steps? I'm trying to make a timed challenge where the user needs to make X amount of steps within an hour. I've tried several things but everything results in my Fitbit or app crashing.
The gist of my what I'm trying to do is here:
btn3.onactivate = function(evt){
exercise.start("Basic exercise");
challenge();
}
function challenge(){
//Track steps until goal is reached, or until an hour has passed.
}Any help would be appreciated!
Edit: I have tried a while loop which crashed the app and a recursive function which crashed the Fitbit all together.
Answered! Go to the Best Answer.
Best Answer05-15-2019 01:27
Fitbit Developers oversee the SDK and API forums. We're here to answer questions about Fitbit developer tools, assist with projects, and make sure your voice is heard by the development team.
05-15-2019 01:27
You'll need to get the start time, and current number of steps when the exercise starts, then periodically check the difference between the time, and the step count.
Something like this:
import { today } from "user-activity";
let startTime;
let startSteps;
let timerId;
btn3.onactivate = (evt) => {
startTime = new Date();
startSteps = today.adjusted.steps;
timerId = setInterval(checkStatus, 60 * 1000);
// start exercise
}
function checkStatus() {
// check now vs. startTime - is it within an hour
// check startSteps vs. today.adjusted.steps
// if meets criteria, clearInterval(timerId) and stop exercise
}
Best Answer05-15-2019 01:27
Fitbit Developers oversee the SDK and API forums. We're here to answer questions about Fitbit developer tools, assist with projects, and make sure your voice is heard by the development team.
05-15-2019 01:27
You'll need to get the start time, and current number of steps when the exercise starts, then periodically check the difference between the time, and the step count.
Something like this:
import { today } from "user-activity";
let startTime;
let startSteps;
let timerId;
btn3.onactivate = (evt) => {
startTime = new Date();
startSteps = today.adjusted.steps;
timerId = setInterval(checkStatus, 60 * 1000);
// start exercise
}
function checkStatus() {
// check now vs. startTime - is it within an hour
// check startSteps vs. today.adjusted.steps
// if meets criteria, clearInterval(timerId) and stop exercise
}
Best Answer05-16-2019 10:43 - edited 05-16-2019 10:47
05-16-2019 10:43 - edited 05-16-2019 10:47
Would you be able to provide API links for the setInterval and Date methods? I'm new to JavaScript and cling to the API for assistance.
Edit/Note: I'm asking because I can't seem to find them on my phone and I won't have access to my desktop for a few days and I'd rather learn it inside out before sitting down to code again.
Best Answer05-16-2019 10:48
Fitbit Developers oversee the SDK and API forums. We're here to answer questions about Fitbit developer tools, assist with projects, and make sure your voice is heard by the development team.
05-16-2019 10:48
The device supports EcmaScript 5.1, so those are just standard features of JavaScript.
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
Best Answer