1

我需要获取我的健康数据以反映 android fit 应用程序中显示的数据。我曾尝试使用 Sensor API,但这个数字反映了自设备启动以来所采取的步数,而不是当天的步数。

如何从 Google Fit REST API(如 Google Fit 应用程序)获取步数?

我也尝试过使用 History API 并查询 stepcount_cumulative 和 step_delta。这两个值都不反映 fit API 的值。

我想出了将前一天的值存储在 sharedPref 中并减去差值以获得真实值的想法。还需要考虑设备重置时间的其他计算。

有没有更简单的方法来获得我需要的值?

4

2 回答 2

1

试试这个新方法HistoryApi.readDailyTotal()。(需要谷歌播放服务 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

于 2015-05-07T08:38:35.923 回答
0

这对我有用: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);
    }
于 2015-03-23T22:30:07.360 回答