Google Fit权限未在第一时间授予

时间:2016-08-31 07:07:51

标签: android google-fit

我正试图从google fit API获取步数,距离,卡路里。 我使用GoogleApiClient来访问Google Fit中的数据。 我要求根据Google Fit权限允许访问Google健身中的所有数据:

此权限每次都会弹出。我需要允许4到5次,然后才能从Google Fit中获取步骤。

我第一次获得Google健身许可需要做些什么。 所以请帮我解决这个问题。

mGoogleApiClient1 = new GoogleApiClient.Builder(this)
    .addApi(Fitness.HISTORY_API)
    .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
    .addScope(new Scope(Scopes.FITNESS_BODY_READ_WRITE))
    .addScope(new Scope(Scopes.FITNESS_LOCATION_READ_WRITE))
    .addConnectionCallbacks(this)
    .enableAutoManage(this, Constants.googleApi, this)
    .build();

2。我使用以下API来获取步距和卡路里 请告诉我为什么我没有从Google Fit获得一致的数据。 它总是比Google Fit的原始步骤获得的步骤数据更多。

// get Steps data from bellow api
private void getStepDataForToday() {
    DailyTotalResult result = Fitness.HistoryApi.readDailyTotal( mGoogleApiClient1, DataType.TYPE_STEP_COUNT_DELTA ).await(1, TimeUnit.MINUTES);
    showDataSet(result.getTotal());
}

private void getDistanceDataForToday() {
    DailyTotalResult result = Fitness.HistoryApi.readDailyTotal( mGoogleApiClient1, DataType.TYPE_DISTANCE_DELTA ).await(1, TimeUnit.MINUTES);
    showDataSet(result.getTotal());
}

private void getCaloriesDataForToday() {
    DailyTotalResult result = Fitness.HistoryApi.readDailyTotal( mGoogleApiClient1, DataType.TYPE_CALORIES_EXPENDED ).await(1, TimeUnit.MINUTES);
    showDataSet(result.getTotal());
}

谢谢 并等待帮助

1 个答案:

答案 0 :(得分:1)

对于适合权限,请确保或仔细检查您是否正确遵循Authorization in Android中的指示。

对于您获得的步数,距离和卡路里数据,这只是Google健身的原始步骤吗?

Google FIT的FAQ声明:

  

由于Google Fit更新的发布方式,可能会有所帮助   Google Fit应用程序具有更新版本的数据分析   代码比Google Play服务更少发布。

     

然而,我们的后端总是拥有最新版本的   数据,最终在那里处理的所有内容都应该匹配   在几次云同步之后。如果情况不是这样,请告诉我们。

     

我们正努力让这种情况变得更好   应用程序要求我们立即处理云同步   一切都是同步的,也是通过使它同步发生   输入或更改重要数据时自动显示。

     

这也可能是因为没有读取正确的数据源。至   匹配Google Fit的值,您应该阅读以下数据:

DataSource ESTIMATED_STEP_DELTAS = new DataSource.Builder()
       .setDataType(DataType.TYPE_STEP_COUNT_DELTA)
       .setType(DataSource.TYPE_DERIVED)
       .setStreamName("estimated_steps")
       .setAppPackageName("com.google.android.gms")
       .build();
DataReadRequest readRequest = new DataReadRequest.Builder()
       .aggregate(ESTIMATED_STEP_DELTAS,    DataType.AGGREGATE_STEP_COUNT_DELTA)
       .aggregate(DataType.TYPE_DISTANCE_DELTA, DataType.AGGREGATE_DISTANCE_DELTA)
       .aggregate(DataType.TYPE_CALORIES_EXPENDED, DataType.AGGREGATE_CALORIES_EXPENDED)
       .aggregate(DataType.TYPE_ACTIVITY_SEGMENT, DataType.AGGREGATE_ACTIVITY_SUMMARY)
       .bucketByTime(1, TimeUnit.DAYS)
       .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
       .build();

有关详情,请查看相关的SO question