繁体   English   中英

解释在google fit中onDataPoint中获得的步长值

[英]Interpretation of step value obtained in onDataPoint in google fit

我有以下代码来计算步数

@Override
public void onDataPoint(DataPoint dataPoint) {
    for (final Field field : dataPoint.getDataType().getFields()) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                steps = dataPoint.getValue(field).asInt();
                Log.d(TAG, "Steps: " + steps); 
            }
        });
    }
}

我发现了什么:

  1. 此步骤值不是当前步骤的值。 当日期更改时,步骤值不会重置为0并继续递增。
  2. 它不是所有先前步骤的总和,因为我的累计步骤接近51,000,而目前它显示在2000左右。
  3. 每次运行代码时,步骤值都不会重置为0,因此它会接收一些过去的值。
  4. 如果我卸载并重新安装该应用程序,它仍然从2000开始。

我想在计算步骤时知道dataPoint.getValue(field).asInt()究竟是什么?

DataPoint定义如下:

  • 表示来自特定数据源的数据类型流中的单个数据点。 数据点包含每个字段的值,时间戳和可选的开始时间。 每个属性的确切语义在特定数据类型的文档中指定,可以在DataType中的相应常量中找到。

  • 数据点可以表示瞬时测量,读取或输入观察,以及一段时间间隔内的平均值或聚合。 检查数据类型文档以确定特定数据类型的情况。

  • DataPoints始终为每个数据类型字段包含一个值。 最初,所有值都未设置。 创建数据点后,应设置适当的值和时间戳。

公共值getValue(字段字段)

返回具有给定名称的字段的值持有者。 此方法既可用于查询值也可用于设置值。

创建自定义数据类型的数据点:

// Create a data point for a data source that provides
// data of type "com.app.custom_data_type" (created above)
DataPoint dataPoint = DataPoint.create(myDataSource);

// Set values for the data point
// This data type has two custom fields (int, float) and a common field
dataPoint.getValue(0).setInt(mField1IntValue);
dataPoint.getValue(1).setFloat(mField2FloatValue);
dataPoint.getValue(Field.FIELD_ACTIVITY).setInt(mActivityValue);

创建包含intfloat字段的自定义数据类型时,不能对这些字段使用DataPoint.setFloatValues()DataPoint.setIntValues()方法。 在这种情况下,获取数据点的组件并分别为每个组件分配值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM