今日から歩数を上げようと思います。そのため、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を取得し、2番目のものを使用して1425ステップを答えとして使用します。正しいもの (Google Fit アプリと比較した後) は 1425 である必要があります。したがって、最初のものはなぜ機能しないのですか?
先週からの手順を尋ねることで、私も同じ問題を抱えています。先週の歩数に方法 1 を使用することで、適切な日の歩数 (場合によっては正しい日も) を取得できることに気付きましたが、歩数の値が 50 を超える (と思います) 値は正しくありません。
誰もこの奇妙な行動に対する答えを持っていますか?