我正在为 gear fit 2 pro 构建一个 html/js 驱动的表盘,但我无法完成看似简单的任务:获取每日步数。
我已经翻阅了文档,但它只描述了如何计算自表盘启动以来的步数,或自设备启动以来的步数。其他表盘会立即检测系统范围的步数并显示它,但我不明白这是怎么可能的!
有没有人有如何做到这一点的例子?我怀疑可能涉及 stepdifference 或 readrecorderdata 函数,但由于文档不足,第一个函数无法使用,而第二个函数似乎实际上并不存在于设备中。
我正在为 gear fit 2 pro 构建一个 html/js 驱动的表盘,但我无法完成看似简单的任务:获取每日步数。
我已经翻阅了文档,但它只描述了如何计算自表盘启动以来的步数,或自设备启动以来的步数。其他表盘会立即检测系统范围的步数并显示它,但我不明白这是怎么可能的!
有没有人有如何做到这一点的例子?我怀疑可能涉及 stepdifference 或 readrecorderdata 函数,但由于文档不足,第一个函数无法使用,而第二个函数似乎实际上并不存在于设备中。
您可以为所需的时间段传感器数据设置AccumulativePedometerListener()。在您的情况下,您可以在一天结束时重置侦听器。我为您编写了一个伪代码来显示每日步数。
var sensor_data = document.getElementById("sensor-data");
var step_count=0,
offset=0, // to reduce yesterday's data
currentDailyStep=0;
function updateTime() {
var datetime = tizen.time.getCurrentDateTime(),
hour = datetime.getHours(),
minute = datetime.getMinutes(),
second = datetime.getSeconds();
if(hour === 23 && minute === 59 && second === 59){ // at the end of the day
tizen.humanactivitymonitor.unsetAccumulativePedometerListener();
tizen.humanactivitymonitor.stop("PEDOMETER");
offset = step_count; // store today's count
pedometer_init(); //reset
}
/*
* Other Codes
* ............
* .........
*/
}
function onchangedCB(pedometerInfo) {
step_count = pedometerInfo.accumulativeTotalStepCount;
currentDailyStep = step_count - offset; // totl count - total count till yesterday
sensor_data.innerHTML = currentDailyStep;
}
function pedometer_init(){
tizen.humanactivitymonitor.start("PEDOMETER");
tizen.humanactivitymonitor.setAccumulativePedometerListener(onchangedCB);
}
function init(){
pedometer_init();
}
window.onload = init();
您需要手动减少偏移量,因为 stop() 函数不会重置计数。存储每日步数数据如果您有兴趣显示统计数据。
此外,在 Tizen Developers API References中有一个使用 HumanActivityRecorder 记录每日步数的代码示例,请检查是否有帮助:
function onerror(error){
console.log(error.name + ": " + error.message);
}
function onread(data){
for (var idx = 0; idx < data.length; ++idx)
{
console.log("*** " + idx);
console.log('totalStepCount: ' + data[idx].totalStepCount);
}
}
var type = 'PEDOMETER';
var now = new Date();
var startTime = now.setDate(now.getDate() - 7);
var anchorTime = (new Date(2000, 1, 2, 6)).getTime();
var query ={
startTime: startTime / 1000,
anchorTime: anchorTime / 1000,
interval: 1440 /* 1 day */
};
try{
tizen.humanactivitymonitor.readRecorderData(type, query, onread, onerror);
}
catch (err){
console.log(err.name + ': ' + err.message);
}