我试图从今天开始走几步。因此,我找到了 2 个解决方案。1)
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, 00);
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;
}
}}
2)
private void getStepsToday() {
PendingResult<DailyTotalResult> result = Fitness.HistoryApi.readDailyTotal(mGoogleApiFitnessClient, DataType.TYPE_STEP_COUNT_DELTA);
DailyTotalResult totalResult = result.await(30, TimeUnit.SECONDS);
if (totalResult.getStatus().isSuccess()) {
DataSet totalSet = totalResult.getTotal();
int total = totalSet.isEmpty()
? 0
: totalSet.getDataPoints().get(0).getValue(Field.FIELD_STEPS).asInt();
publishTodaysStepData(total);
} else {
publishTodaysStepData(0);
}
}
通过使用第一个我得到例如 27 和通过使用第二个 1425 步骤作为答案。正确的(与 google fit 应用比较后)应该是 1425。那么为什么第一个不起作用?
从上周开始询问步骤,我也遇到了同样的问题。通过使用方法 1 进行上周的步骤,我意识到我确实在正确的日子(有时甚至是正确的日子)获得了步骤,但是每当步骤值超过 50(我认为)时,该值是不正确的。
有人对这种奇怪的行为有答案吗?