如何在Google Fit Api中区分手动添加的步骤和传感器记录的步骤

时间:2019-01-08 14:20:56

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

我在我的项目中使用Google Fit Api来获取用户的日常操作。但是问题是,用户可以通过添加活动来手动输入步骤。当我检索日常步骤时,Google Fit Api还会返回手动添加的步骤。 有什么方法可以区分手动添加的步骤和传感器记录的步骤。

2 个答案:

答案 0 :(得分:1)

基本上,Google Fit文档中给出的示例指出,您可以使用this method来获取设备的基本每日总步数。

  

您的应用可以使用Recording API记录用户的步数   创建DataType.TYPE_STEP_COUNT_CUMULATIVE的订阅   数据类型

对于您而言,您将获得汇总数据,该数据是传感器记录的步骤和使用History API提取的数据的组合。

尝试检查您将需要的essential Google Fit API's

答案 1 :(得分:1)

这就是我解决此问题的方式。

   final DataReadRequest readRequest = new DataReadRequest.Builder()
            .read(googleFitUtils.getEstimatedSteps())
            .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
            .build();

    DataReadResult dataReadResult =
            Fitness.HistoryApi.readData(mGoogleApiFitnessClient, readRequest).await(1, TimeUnit.MINUTES);

    DataSet stepData = dataReadResult.getDataSet(DataType.TYPE_STEP_COUNT_DELTA);

    int totalSteps = 0;

    for (DataPoint dp : stepData.getDataPoints()) {
        for(Field field : dp.getDataType().getFields()) {
            int steps = dp.getValue(field).asInt();
            if (!"user_input".equals(dp.getOriginalDataSource().getStreamName()))
                totalSteps += steps;
        }
    }

第一点->在使用

获得总步骤之前
Fitness.HistoryApi.readDailyTotal

,它返回一个包含每日总步数的数据点。 第二点->然后,我更改了使用以下方法获取每日工作量的方法

Fitness.HistoryApi.readData

它返回带有每日步骤块的数据点数组。每个数据点的属性均为

dp.getOriginalDataSource().getStreamName()

返回您的类型,步骤是由传感器记录的,还是使用输入。 这样便可以过滤用户输入步骤,从而避免步骤被应用程序破坏。