Class Info |
|---|
public class SamplePoint implements Parcelable 采样点类,是特定数据采集器在某时刻(或一段时间)采集到的特定数据类型的样本。保存了该时刻(或时间范围内)数据类型各维度的值,以及采样的起止时间。 采样点的采样方式根据数据类型的定义,分为瞬时采样和区间采样两种, 在设置采样点时间时,建议瞬时数据使用setSamplingTime()接口,区间数据使用setTimeInterval()接口(必须是一个有效时间段)。 区间数据在初次创建时不支持使用setSamplingTime(),否则无法创建成功;但该接口可以用来修改已创建的区间采样点的结束时间,调用后仅会修改结束时间。 |
Qualifier and Type | Class Name and Description |
|---|---|
public static class | SamplePoint的构造器。 |
Qualifier and Type | Method Name and Description |
|---|---|
void | addMetadata(String key, String value) 按键值对设置SamplePoint中的元数据。 |
static Builder | builder(DataCollector dataCollector) 基于数据源创建SamplePoint。 |
final void | 时间间隔合理性校验。 |
static SamplePoint | create(DataCollector dataCollector) 构造采样点。 |
| 获取采样点的数据采集器。 | |
| 获取此采样点的数据类型。 | |
long | getEndTime(TimeUnit timeUnit) 获取此采样点的结束时间戳。 |
Value | getFieldValue(Field field) 获取该属性值。 |
Value | getFieldValue(String fieldName) 获取该属性值。 |
Map<String, Value> | 获取所有属性的值。 |
long | getId() 获取此采样点的id。 |
long | getInsertionTime(TimeUnit timeUnit) 获取插入时间。 |
String | 获取SamplePoint中的元数据。 |
final DataCollector | 获取此采样点的原始数据采集器,未设置时返回Null。 |
final DataCollector | 获取此采样点的原始数据采集器。 |
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) 设置区间数据的采样时间戳。 |
Method |
|---|
public static Builder builder(DataCollector dataCollector) 基于数据源创建SamplePoint。 |
Parameters
Name | Description |
|---|---|
dataCollector | 数据采集器。 |
Returns
Type | Description |
|---|---|
Builder | 数据采集点内部构造器对象。 |
Method |
|---|
public static SamplePoint create(DataCollector dataCollector) 构造采样点。 |
Parameters
Name | Description |
|---|---|
dataCollector | 数据采集器。 |
Returns
Type | Description |
|---|---|
SamplePoint | 采样点。 |
Method |
|---|
public final void checkIntervalValidity() 时间间隔合理性校验:
|
Method |
|---|
public DataCollector getDataCollector() 获取此采样点的数据采集器。 |
Returns
Type | Description |
|---|---|
数据采集器。 |
Method |
|---|
public long getEndTime(TimeUnit timeUnit) 获取此采样点的结束时间戳。 |
Parameters
Name | Description |
|---|---|
timeUnit | 时间单位。 |
Returns
Type | Description |
|---|---|
long | 结束时间。 |
Method |
|---|
public Value getFieldValue(Field field) 获取该属性值。 |
Parameters
Name | Description |
|---|---|
field | 数据属性。 |
Returns
Type | Description |
|---|---|
Value | 属性值。 |
Method |
|---|
public Value getFieldValue(String fieldName) 获取该属性值。 |
Parameters
Name | Description |
|---|---|
fieldName | 数据属性名。 |
Returns
Type | Description |
|---|---|
Value | 属性值。 |
Method |
|---|
public Map<String, Value> getFieldValues() 获取所有属性的值。 |
Returns
Type | Description |
|---|---|
Map<String, Value> | 所有属性的值。 |
Method |
|---|
public long getInsertionTime(TimeUnit timeUnit) 获取插入时间。 |
Parameters
Name | Description |
|---|---|
timeUnit | 时间单位。 |
Returns
Type | Description |
|---|---|
long | 获取的插入时间。 |
Method |
|---|
public final DataCollector getNullableRawCollector() 获取此采样点的原始数据采集器,未设置返回Null。 |
Returns
Type | Description |
|---|---|
数据采集器。 |
Method |
|---|
public final DataCollector getRawDataCollector() 获取此采样点的原始数据采集器。 |
Returns
Type | Description |
|---|---|
数据采集器。 |
Method |
|---|
public long getSamplingTime(TimeUnit timeUnit) 获取采样点的时间戳。 |
Parameters
Name | Description |
|---|---|
timeUnit | 时间单位。 |
Returns
Type | Description |
|---|---|
long | 时间戳。 |
Method |
|---|
public long getStartTime(TimeUnit timeUnit) 获取此采样点的开始时间戳。 |
Parameters
Name | Description |
|---|---|
timeUnit | 时间单位。 |
Returns
Type | Description |
|---|---|
long | 开始时间。 |
Method |
|---|
public void setInsertionTime(long insertTime, TimeUnit timeUnit) 设置数据插入时间。 |
Parameters
Name | Description |
|---|---|
insertTime | 数据插入时间。 |
timeUnit | 时间单位。 |
Method |
|---|
public final SamplePoint setSamplingTime(long sampleTime, TimeUnit timeUnit) 设置瞬间数据的采样时间戳。 |
Parameters
Name | Description |
|---|---|
sampleTime | 时间戳。 |
timeUnit | 时间单位。 |
Returns
Type | Description |
|---|---|
SamplePoint | 采样点。 |
Method |
|---|
public final SamplePoint setTimeInterval(long start, long end, TimeUnit timeUnit) 设置区间数据的采样时间戳。 |
Parameters
Name | Description |
|---|---|
start | 开始时间。 |
end | 结束时间。 |
timeUnit | 时间单位。 |
Returns
Type | Description |
|---|---|
SamplePoint | 采样点。 |
Method |
|---|
public String getMetadata() 获取SamplePoint中的元数据。 |
Returns
Type | Description |
|---|---|
String | 元数据。 |
Method |
|---|
public void setMetadata(String metadata) 设置SamplePoint中的元数据。 |
Parameters
Name | Description |
|---|---|
metadata | 元数据,可以是null、空字符串或者长度在1到10000之间的字符串。 |
See Also:
Method |
|---|
public void addMetadata(String key, String value) 按键值对设置SamplePoint中的元数据。 |
Parameters
Name | Description |
|---|---|
key | 元数据的key值。 |
value | 元数据的value值。 |
请注意若创建的SamplePoint的数据类型为步数或者血糖类型,且开发者希望将写入Health Service Kit的数据在运动健康App首页展示,需要按以下列举的键值对设置SamplePoint中的元数据。
以下示例为步数数据类型创建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);