【问题标题】:Get Active calories burned using the Google fit Recording_API使用 Google fit Recording_API 获取消耗的有效卡路里
【发布时间】:2017-07-06 08:54:55
【问题描述】:

我正在开发健身应用程序,我需要使用 Recording_API 获取一些信息来跟踪步数、燃烧的卡路里和行走的距离。我能够成功计算步数,但无法获得活动卡路里和距离。下面我放代码来获取燃烧的卡路里。

googleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Fitness.HISTORY_API)
            .addApi(Fitness.RECORDING_API)
            .addApi(Fitness.CONFIG_API)
            .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ))
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .enableAutoManage(this, 0, this)
            .build();

Fitness.RecordingApi.subscribe(googleApiClient, DataType.TYPE_CALORIES_EXPENDED)
            .setResultCallback(new ResultCallback<Status>() {
                @Override
                public void onResult(Status status) {
                    if (status.isSuccess()) {
                        if (status.getStatusCode() == FitnessStatusCodes.SUCCESS_ALREADY_SUBSCRIBED) {
                            Log.e( "RecordingAPI", "Already subscribed to the Recording API");
                        } else {
                            Log.e("RecordingAPI", "Subscribed to get Calories using Recording API");
                        }
                    }
                }
            });



new DataReadRequest.Builder()
            .aggregate(DataType.TYPE_CALORIES_EXPENDED, DataType.AGGREGATE_CALORIES_EXPENDED)
            .bucketByActivitySegment(1, TimeUnit.MILLISECONDS)
            .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
            .build();



Fitness.HistoryApi.readData(mClient, readRequest).await(1, TimeUnit.MINUTES);

if (dataReadResult.getBuckets().size() > 0) {
        for (Bucket bucket : dataReadResult.getBuckets()) {
            String bucketActivity = bucket.getActivity();
            if (bucketActivity.contains(FitnessActivities.WALKING)) {
                List<DataSet> dataSets = bucket.getDataSets();
                for (DataSet dataSet : dataSets) {
                    dumpDataSet(dataSet);
                }
            }
        }
 }



for (DataPoint dp : dataSet.getDataPoints()) {
        if (dp.getEndTime(TimeUnit.MILLISECONDS) > dp.getStartTime(TimeUnit.MILLISECONDS)) {
            for (Field field : dp.getDataType().getFields()) {
                expendedCalories = expendedCalories + dp.getValue(field).asFloat();
            }
        }
 }

在上面的代码中,bucket 活动是未知的,dataPoints 是空的,因此我无法获得卡路里。以前我使用的是 HISTORY_API,使用它我能够正确获取所有信息,但它仅在用户拥有 google fit 帐户时才有效,否则它会给出空结果。 谁能帮帮我。

【问题讨论】:

    标签: android google-fit


    【解决方案1】:

    你说:

    只有当用户有 google fit 帐户时它才会起作用,否则它会给出空结果。谁能帮帮我。

    根据这个Quickstart for Android Google Fitness Document,确实需要有Google Account才能使用Fit API。

    第 1 步:获取 Google 帐户

    要使用 Google Fit API,您需要一个 Google 帐户。如果你已经 有一个帐户,然后你就准备好了。您可能还想创建一个 单独的 Google 帐户用于测试目的。

    【讨论】:

    • 它会工作,你只需要谷歌账户NOT谷歌健身账户。
    • 顺便说一句,现在我可以使用 RECORDING_API 获取消耗的活跃卡路里。感谢您的回复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多