如何使用 fitness api 获取距离?

How do I get distance using fitness api?

我正在使用 Google Fit API,具体使用 HistoryApi

我正在使用 Fitness.HistoryApi.readDailyTotal 获取步数、卡路里和距离。从那我得到了步数和卡路里,但距离造成了问题。但是 onResult 没有被调用。任何帮助将不胜感激。

PendingResult<DailyTotalResult> distanceResult = Fitness.HistoryApi
    .readDailyTotal(mClient, DataType.TYPE_DISTANCE_DELTA);

distanceResult.setResultCallback(new ResultCallback<DailyTotalResult>() {
    @Override
    public void onResult(DailyTotalResult dailyTotalResult) {
        if (dailyTotalResult.getStatus().isSuccess()) {
            DataSet totalSet = dailyTotalResult.getTotal();
            long distance = totalSet.isEmpty()? 0: totalSet.getDataPoints().get(0).getValue(Field.FIELD_DISTANCE).asInt();
            Log.i("-------------", "distance= " + distance);
        }
    }
});

根据上面的代码 if (dailyTotalResult.getStatus().isSuccess()) { 这在距离的情况下是错误的,而在我尝试获取步数和卡路里时它 returns 是正确的。

以上所有代码都在后台线程中运行。

能否尝试添加以下范围?

.addScope(new Scope(Scopes.FITNESS_LOCATION_READ))

也升级新版 api:

compile 'com.google.android.gms:play-services-fitness:10.0.0'