【问题标题】:Google Fit History API readDailyTotal: non-static method in static contextGoogle Fit History API readDailyTotal:静态上下文中的非静态方法
【发布时间】:2016-02-29 19:21:47
【问题描述】:

我正在尝试使用 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
   }

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

【问题讨论】:

    标签: android google-fit


    【解决方案1】:

    您正在明确等待可能需要更长时间的结果。此外,如果你从 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 的方法。

    【讨论】:

    • 我需要添加一个@Override 并将结果显式转换为 DailyTotalResult,然后这段代码就可以完美运行。谢谢!
    • 谢谢,我正在即时将它从 kotlin 转换过来,呵呵。我将修改示例代码以供记录。
    猜你喜欢
    • 2011-11-03
    • 2015-10-21
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多