Google FIT API返回不同的步骤计数 [英] Google FIT api returns different step counts

查看:243
本文介绍了Google FIT API返回不同的步骤计数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

通过getDailyTotal和按日期存储的getData访问时,stepcount是不同的.请帮忙.

Stepcount is different when accessed by getDailyTotal and getData bucketed by day. Please help.

Fitness.HistoryApi.readDailyTotal(App.gClient, DataType.TYPE_STEP_COUNT_DELTA)->返回的步数为1515

Fitness.HistoryApi.readDailyTotal(App.gClient, DataType.TYPE_STEP_COUNT_DELTA)-> returns step count as 1515

private void getStepsDataHistory(long startTime, long endTime) {
DataReadRequest dataReadRequest = new DataReadRequest.Builder()
.bucketByTime(1, TimeUnit.DAYS)
.aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA)
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS).build();

->返回一周的数据,今天的步数= 2877

-> returns data for a week, where today's steps =2877

我在logcat中也收到此警告: 在Shared Pref for DataType {com.google.step_count.delta {steps(i)}}中找不到聚合数据.

I also get this warning in the logcat: Couldn't find aggregated data in Shared Pref for DataType{com.google.step_count.delta{steps(i)}}.

推荐答案

请确保您输入的开始时间和结束时间正确,即从午夜12点到现在.但是,如果您需要在无法显示权限面板的区域中使用步骤数据(例如,Android Wear表盘),则readDailyTotal可能会很有用. 所以我建议您以这种方式使用Aggregate方法,您将获得与Google Fit应用程序相同的安静步数.检查一下.

Please make sure that the start time and end time you gave are correct i.e from 12Am midnight to now. However readDailyTotal can be useful if you require step data for use in areas where you are unable to show the permissions panel (for example, Android Wear watch faces). So i advised you to use Aggregate method in that way you will get quiet equal step count as google fit app . Check this out .

public int getStepsCount(long startTime, long endTime) {
    PendingResult<DataReadResult> pendingResult = Fitness.HistoryApi
            .readData(
                    fitnessClient,
                    new DataReadRequest.Builder()
                            .aggregate(DataType.TYPE_STEP_COUNT_DELTA,
                                    DataType.AGGREGATE_STEP_COUNT_DELTA)
                            .bucketByTime(1, TimeUnit.DAYS)
                            .setTimeRange(startTime, endTime,
                                    TimeUnit.MILLISECONDS)
                                    .build());
    int steps = 0;
    DataReadResult dataReadResult = pendingResult.await();
    if (dataReadResult.getBuckets().size() > 0) {
        for (Bucket bucket : dataReadResult.getBuckets()) {
            List<DataSet> dataSets = bucket.getDataSets();
            for (DataSet dataSet : dataSets) {
                for (DataPoint dp : dataSet.getDataPoints()) {
                    for (Field field : dp.getDataType().getFields()) {
                        steps += dp.getValue(field).asInt();
                    }
                }
            }
        }
    } else if (dataReadResult.getDataSets().size() > 0) {
        for (DataSet dataSet : dataReadResult.getDataSets()) {
            for (DataPoint dp : dataSet.getDataPoints()) {
                for (Field field : dp.getDataType().getFields()) {
                    steps += dp.getValue(field).asInt();
                }
            }
        }
    }
    return steps;
}

这篇关于Google FIT API返回不同的步骤计数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆