首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用谷歌fit Recording_API燃烧活动卡路里

使用谷歌fit Recording_API燃烧活动卡路里
EN

Stack Overflow用户
提问于 2017-06-28 18:10:18
回答 1查看 455关注 0票数 0

我正在健身应用程序上工作,我需要使用Recording_API获得一些信息,以跟踪步数,燃烧的卡路里和覆盖的距离。我可以成功地计算步数,但无法获得活动卡路里和距离。下面我把代码放在燃烧卡路里的地方。

代码语言:javascript
复制
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();
            }
        }
 }

在上面的代码中,存储桶的活动是未知的,而dataPoints是空的,因为我无法获得卡路里。之前我使用的是HISTORY_API,使用这个我能够正确地获取所有信息,但它只有在用户拥有谷歌fit帐户时才能工作,否则它会给出空的结果。有没有人能帮我一下。

EN

回答 1

Stack Overflow用户

发布于 2017-06-30 17:53:40

你说过:

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

根据这个Quickstart for Android Google Fitness Document,它确实需要有谷歌帐户才能使用Fit API。

谷歌第一步:获取

帐号

要使用Google Fit API,您需要一个Google帐户。如果你已经有了一个帐户,那么一切都准备好了。您可能还想创建一个单独的谷歌帐户用于测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44799566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档