目录

SamplePoint

Class Info

public class SamplePoint implements Parcelable

采样点类,是特定数据采集器在某时刻(或一段时间)采集到的特定数据类型的样本。保存了该时刻(或时间范围内)数据类型各维度的值,以及采样的起止时间。

采样点的采样方式根据数据类型的定义,分为瞬时采样和区间采样两种,

在设置采样点时间时,建议瞬时数据使用setSamplingTime()接口,区间数据使用setTimeInterval()接口(必须是一个有效时间段)。

区间数据在初次创建时不支持使用setSamplingTime(),否则无法创建成功;但该接口可以用来修改已创建的区间采样点的结束时间,调用后仅会修改结束时间。

Nested Class Summary

Qualifier and Type

Class Name and Description

public static class

SamplePoint.Builder

SamplePoint的构造器。

Public Method Summary

Qualifier and Type

Method Name and Description

void

addMetadata(String key, String value)

按键值对设置SamplePoint中的元数据。

static Builder

builder(DataCollector dataCollector)

基于数据源创建SamplePoint。

final void

checkIntervalValidity()

时间间隔合理性校验。

static SamplePoint

create(DataCollector dataCollector)

构造采样点。

DataCollector

getDataCollector()

获取采样点的数据采集器。

DataType

getDataType()

获取此采样点的数据类型。

long

getEndTime(TimeUnit timeUnit)

获取此采样点的结束时间戳。

Value

getFieldValue(Field field)

获取该属性值。

Value

getFieldValue(String fieldName)

获取该属性值。

Map<String, Value>

getFieldValues()

获取所有属性的值。

long

getId()

获取此采样点的id。

long

getInsertionTime(TimeUnit timeUnit)

获取插入时间。

String

getMetadata()

获取SamplePoint中的元数据。

final DataCollector

getNullableRawCollector()

获取此采样点的原始数据采集器,未设置时返回Null。

final DataCollector

getRawDataCollector()

获取此采样点的原始数据采集器。

long

getSamplingTime(TimeUnit timeUnit)

获取采样点的时间戳。

long

getStartTime(TimeUnit timeUnit)

获取此采样点的开始时间戳。

boolean

isMerged()

是否是融合数据。

void

setId(long id)

设置此采样点的id。

void

setInsertionTime(long insertTime, TimeUnit timeUnit)

设置数据插入时间。

void

setMetadata(String metadata)

直接设置SamplePoint中的元数据。

final SamplePoint

setSamplingTime(long sampleTime, TimeUnit timeUnit)

设置瞬间数据的采样点时间戳。

final SamplePoint

setTimeInterval(long start, long end, TimeUnit timeUnit)

设置区间数据的采样时间戳。

Public Methods

[h2]builder(DataCollector dataCollector)

Method

public static Builder builder(DataCollector dataCollector)

基于数据源创建SamplePoint。

Parameters

Name

Description

dataCollector

数据采集器。

Returns

Type

Description

Builder

数据采集点内部构造器对象。

[h2]create(DataCollector dataCollector)

Method

public static SamplePoint create(DataCollector dataCollector)

构造采样点。

Parameters

Name

Description

dataCollector

数据采集器。

Returns

Type

Description

SamplePoint

采样点。

[h2]checkIntervalValidity()

Method

public final void checkIntervalValidity()

时间间隔合理性校验:

  1. 开始时间和结束时间均不可为0。
  2. 开始时间不应大于结束时间。
  3. 时间跨度不超过3天。
  4. 区间数据类型开始时间应小于结束时间。
  5. 统计类型(总量、聚合)时间跨度不超过1年(366天)。
  6. 无法识别的数据类型(自定义数据类型)符合1、2、3即可。

[h2]getDataCollector()

Method

public DataCollector getDataCollector()

获取此采样点的数据采集器。

Returns

Type

Description

DataCollector

数据采集器。

[h2]getDataType()

Method

public DataType getDataType()

获取此采样点的数据类型。

Returns

Type

Description

DataType

数据类型。

[h2]getEndTime(TimeUnit timeUnit)

Method

public long getEndTime(TimeUnit timeUnit)

获取此采样点的结束时间戳。

Parameters

Name

Description

timeUnit

时间单位。

Returns

Type

Description

long

结束时间。

[h2]getFieldValue(Field field)

Method

public Value getFieldValue(Field field)

获取该属性值。

Parameters

Name

Description

field

数据属性。

Returns

Type

Description

Value

属性值。

[h2]getFieldValue(String fieldName)

Method

public Value getFieldValue(String fieldName)

获取该属性值。

Parameters

Name

Description

fieldName

数据属性名。

Returns

Type

Description

Value

属性值。

[h2]getFieldValues()

Method

public Map<String, Value> getFieldValues()

获取所有属性的值。

Returns

Type

Description

Map<String, Value>

所有属性的值。

[h2]getId()

Method

public long getId()

获取此采样点的id。

Returns

Type

Description

long

id

[h2]getInsertionTime(TimeUnit timeUnit)

Method

public long getInsertionTime(TimeUnit timeUnit)

获取插入时间。

Parameters

Name

Description

timeUnit

时间单位。

Returns

Type

Description

long

获取的插入时间。

[h2]getNullableRawCollector()

Method

public final DataCollector getNullableRawCollector()

获取此采样点的原始数据采集器,未设置返回Null。

Returns

Type

Description

DataCollector

数据采集器。

[h2]getRawDataCollector()

Method

public final DataCollector getRawDataCollector()

获取此采样点的原始数据采集器。

Returns

Type

Description

DataCollector

数据采集器。

[h2]getSamplingTime(TimeUnit timeUnit)

Method

public long getSamplingTime(TimeUnit timeUnit)

获取采样点的时间戳。

Parameters

Name

Description

timeUnit

时间单位。

Returns

Type

Description

long

时间戳。

[h2]getStartTime(TimeUnit timeUnit)

Method

public long getStartTime(TimeUnit timeUnit)

获取此采样点的开始时间戳。

Parameters

Name

Description

timeUnit

时间单位。

Returns

Type

Description

long

开始时间。

[h2]isMerged()

Method

public boolean isMerged()

是否是融合数据。

Returns

Type

Description

boolean

是否是融合数据。

[h2]setId()

Method

public void setId(long id)

设置此采样点的id。

Parameters

Name

Description

id

采样点的id。

[h2]setInsertionTime(long insertTime, TimeUnit timeUnit)

Method

public void setInsertionTime(long insertTime, TimeUnit timeUnit)

设置数据插入时间。

Parameters

Name

Description

insertTime

数据插入时间。

timeUnit

时间单位。

[h2]setSamplingTime(long sampleTime, TimeUnit timeUnit)

Method

public final SamplePoint setSamplingTime(long sampleTime, TimeUnit timeUnit)

设置瞬间数据的采样时间戳。

Parameters

Name

Description

sampleTime

时间戳。

timeUnit

时间单位。

Returns

Type

Description

SamplePoint

采样点。

[h2]setTimeInterval(long start, long end, TimeUnit timeUnit)

Method

public final SamplePoint setTimeInterval(long start, long end, TimeUnit timeUnit)

设置区间数据的采样时间戳。

Parameters

Name

Description

start

开始时间。

end

结束时间。

timeUnit

时间单位。

Returns

Type

Description

SamplePoint

采样点。

[h2]getMetadata()

Method

public String getMetadata()

获取SamplePoint中的元数据。

Returns

Type

Description

String

元数据。

[h2]setMetadata(String metadata)

Method

public void setMetadata(String metadata)

设置SamplePoint中的元数据。

Parameters

Name

Description

metadata

元数据,可以是null、空字符串或者长度在1到10000之间的字符串。

See Also:

addMetadata(String key, String value)

[h2]addMetadata(String key, String value)

Method

public void addMetadata(String key, String value)

按键值对设置SamplePoint中的元数据。

Parameters

Name

Description

key

元数据的key值。

value

元数据的value值。

请注意若创建的SamplePoint的数据类型为步数或者血糖类型,且开发者希望将写入Health Service Kit的数据在运动健康App首页展示,需要按以下列举的键值对设置SamplePoint中的元数据。

  • 若为步数数据类型,key值需设置为“motion_type”(表示运动状态),value值可以设置为:
    • “RUN”(表示跑步);
    • “WALK”(表示走路);
    • “STAIRS”(表示爬楼);
    • “UNKNOWN”(表示未知)。
  • 若为血糖数据类型,key值需设置为“mIsConfirmed”(表示用户确认状态),value值可以设置为:
    • “true”(表示用户已确认);
    • “false”(表示用户未确认)。

以下示例为步数数据类型创建SampleSet,用于调用插入用户的运动健康数据接口。

// 步骤1:构造一个数据采集器对象。
DataCollector dataCollector = new DataCollector.Builder().setPackageName(getApplicationContext())
    .setDataType(DataType.DT_CONTINUOUS_STEPS_DELTA)
    .setDataStreamName("STEPS_DELTA")
    .setDataGenerateType(DataCollector.DATA_TYPE_RAW)
    .build();

// 步骤2:根据数据采集器,创建一个采样集。
final SampleSet sampleSet = SampleSet.create(dataCollector);

// 步骤3:构造一个步数增量(DT_CONTINUOUS_STEPS_DELTA)采样点的开始时间、结束时间、增量步数。
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startDate = null;
Date endDate = null;
try {
    // 此处填写的开始、结束时间,存储时使用标准UNIX时间戳,时间戳不涉及时区
    // 请注意此处设置的插入运动健康数据的采样点数据的开始时间和结束时间均需大于2014年1月1号对应的UNIX时间戳
    startDate = dateFormat.parse("2020-03-17 09:00:00");
    endDate = dateFormat.parse("2020-03-17 09:05:00");
} catch (ParseException e) {
    logger("Time parsing error");
}
int stepsDelta = 200;

// 步骤4:构造一个步数增量采样点。
SamplePoint samplePoint = sampleSet.createSamplePoint()
    .setTimeInterval(startDate.getTime(), endDate.getTime(), TimeUnit.MILLISECONDS);
samplePoint.getFieldValue(Field.FIELD_STEPS_DELTA).setIntValue(stepsDelta);
// 若写入的步数数据需要在运动健康App上展示,需要对采样点添加如下元数据
samplePoint.addMetadata("motion_type", "RUN");

// 步骤5:将一个步数增量采样点存储到采样集,也可以重复执行步骤3 ~ 步骤5添加多个样本点数据到采样集。
sampleSet.addSample(samplePoint);