3

我正在使用 Play 服务的 Android 应用程序中显示每日用户步数数据和活动时间。我的 API 设置正常,一切正常,但我还想阅读用户的目标(在 Google Fit 配置文件中设置的目标)以了解每日步数和活动时间,以便显示达到的百分比。我如何实现这一目标?我在 com.google.android.gms.fitness.* 中找不到任何提供此功能的 API。

谢谢,

迈克尔

4

3 回答 3

1

android play-services (9.8.0) 中的最新更改应该使这成为可能。

1.将 Fitness.GOALS_API 添加到 GoogleAPiClient

googleApiClient = new GoogleApiClient.Builder(CrossoverWatchFaceService.this)
                .addConnectionCallbacks([...])
                .addApi(Fitness.HISTORY_API)
                .addApi(Fitness.GOALS_API)
                .useDefaultAccount()
                .build();
        googleApiClient.connect();

2.检索目标

PendingResult<GoalsResult> pendingResult =
        Fitness.GoalsApi.readCurrentGoals(
                googleApiClient,
                new GoalsReadRequest.Builder()
                        .addDataType(DataType.TYPE_STEP_COUNT_DELTA)
                         .build());
                pendingResult.setResultCallback(
                new ResultCallbacks<GoalsResult>() {
                    @Override
                    public void onSuccess(@NonNull GoalsResult goalsResult) {
                        List<Goal> goals = goalsResult.getGoals();
                        //YOUR CODE HERE
                    }

                    @Override
                    public void onFailure(@NonNull Status status) {
                        Log.d(TAG, "onFailure: ");
                    }
                });

https://developers.google.com/fit/android/using-goals

https://developers.google.com/android/reference/com/google/android/gms/fitness/GoalsApi

于 2016-11-17T14:55:46.303 回答
0

截至目前(2015 年 9 月 22 日),无法从 Google Fit API 获得步数目标。

注意: ACTION_VIEW_GOAL 只允许用户查看。我也无法让它工作。

于 2015-09-22T20:20:45.220 回答
0

如果您想使用同步调用,请使用以下代码片段作为第二部分检索目标:

PendingResult<GoalsResult> pendingResult = Fitness.GoalsApi.readCurrentGoals(
            googleApiClient, new GoalsReadRequest.Builder()
                    .addDataType(DataType.TYPE_STEP_COUNT_DELTA)
                    .build());

GoalsResult goalsResult = pendingResult.await();
List<Goal> goals = goalsResult.getGoals();
// assume 1st goal is step count
double stepGoal = goals.get(0).getMetricObjective().getValue();
于 2017-01-19T00:04:11.587 回答