[英]Google Fit Step Count
我需要获取健身数据以反映在android fit应用程序中显示的数据。 我已经尝试使用Sensor API,但是该数字反映了自设备启动以来(而不是当天)所采取的步骤数量。
如何从Google Fit REST API这样的Google Fit REST API获取步骤计数?
我也尝试使用History API并查询stepcount_cumulative和step_delta。 这两个值都不反映fit API的值。
我想到了将前一天的值存储在sharedPref中并减去差值以获得真实值的想法。 还需要考虑其他有关设备复位时间的计算。
有没有更简单的方法来获取我需要的值?
试试这个新方法HistoryApi.readDailyTotal()
。 (需要Google Play服务v24)
PendingResult<DailyTotalResult> result = HistoryApi.readDailyTotal(client, TYPE_STEP_COUNT_DELTA);
DailyTotalResult totalResult = result.await(30, SECONDS);
if (totalResult.getStatus().isSuccess()) {
DataSet totalSet = totalResult.getTotal();
long total = totalSet.isEmpty()
? 0
: totalSet.getDataPoints().get(0).getValue(FIELD_STEPS).asInt();
} else {
// handle failure
}
https://developer.android.com/reference/com/google/android/gms/fitness/HistoryApi.html
这对我有用 : https : //github.com/rsteckler/Android-Google-Fit-Service-Skeleton
您要寻找的功能:
private void getStepsToday() {
Calendar cal = Calendar.getInstance();
Date now = new Date();
cal.setTime(now);
long endTime = cal.getTimeInMillis();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
long startTime = cal.getTimeInMillis();
final DataReadRequest readRequest = new DataReadRequest.Builder()
.read(DataType.TYPE_STEP_COUNT_DELTA)
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
.build();
DataReadResult dataReadResult =
Fitness.HistoryApi.readData(mGoogleApiFitnessClient, readRequest).await(1, TimeUnit.MINUTES);
DataSet stepData = dataReadResult.getDataSet(DataType.TYPE_STEP_COUNT_DELTA);
int totalSteps = 0;
for (DataPoint dp : stepData.getDataPoints()) {
for(Field field : dp.getDataType().getFields()) {
int steps = dp.getValue(field).asInt();
totalSteps += steps;
}
}
publishTodaysStepData(totalSteps);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.