如何在Google Play服务中访问Google健身用户目标?

时间:2015-05-15 10:35:56

标签: android google-play-services google-fit

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

谢谢,

迈克尔

3 个答案:

答案 0 :(得分: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.Retrieve Goal(s)

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

答案 1 :(得分:0)

截至目前(2015年9月22日),Google Fit API无法实现目标。

注意:ACTION_VIEW_GOAL仅允许用户查看。我也无法让它发挥作用。

答案 2 :(得分: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();