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