【问题标题】:Google Fit Permission not granted in very first time首次未授予 Google Fit 权限
【发布时间】:2016-08-31 07:07:51
【问题描述】:

我正在尝试从 google fit API 获取步数、距离和卡路里。 我使用GoogleApiClient 访问来自 Google Fit 的数据。 我要求每个 Google Fit 许可也允许访问来自 Google Fit 的所有数据:

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

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

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());
}

谢谢 等待帮助

【问题讨论】:

标签: android google-fit


【解决方案1】:

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

您从 Google Fit 获得的步数、距离和卡路里数据仅略高于原始步数?

Google FIT 的FAQ 中声明:

由于 Google 健身更新的发布方式,有可能 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多