Google Fit History API readDailyTotal:静态上下文中的非静态方法

Google Fit History API readDailyTotal: non-static method in static context

我正在尝试使用 Google Fit 请求每日总步数。 readDailyTotal(GoogleApiClient client, DataType dataType) 方法应该处理这个问题,但是,当使用示例代码时,该方法是在静态上下文中调用的,而它是一个非静态方法。

API文档中的代码:

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
   }

我知道还有另一种方法可以读取每日总步数,但我想使用这种方法来获得更清晰的代码。

您正在明确等待可能需要更长时间的结果。此外,如果您从 UI 线程调用它,它将崩溃(您不能在主线程中等待)

我建议你转向这种方法

PendingResult<DailyTotalResult> stepsResult = Fitness.HistoryApi
                    .readDailyTotal(client, DataType.TYPE_STEP_COUNT_DELTA);
stepsResult.setResultCallback(new ResultCallback() {
  @Override
  public onResult(DailyTotalResult it) {
    if (it.getStatus().isSuccess()) {
      DataSet totalSet = it.getTotal();
      long total = totalSet.isEmpty()
         ? 0
         : totalSet.getDataPoints().get(0).getValue(FIELD_STEPS).asInt();
    }
  }
});

我有同样的代码,它工作正常。

另请注意,readDailyTotal 方法是唯一不需要显式用户许可即可访问 Fitness 的方法 API。