/
*
*
*
read the latest data basing on data
type
*
*
@param view (indicating a UI
object
)
*
/
public void readLatestData(View view) {
/
/
1.
Use the specified data
type
(DT_INSTANTANEOUS_HEIGHT) to call the data controller to query
/
/
the latest data of this data
type
.
List
<DataType> dataTypes
=
new ArrayList<>();
dataTypes.add(DataType.DT_INSTANTANEOUS_HEIGHT);
dataTypes.add(DataType.DT_INSTANTANEOUS_BODY_WEIGHT);
dataTypes.add(DataType.DT_INSTANTANEOUS_HEART_RATE);
dataTypes.add(DataType.DT_INSTANTANEOUS_STRESS);
dataTypes.add(HealthDataTypes.DT_INSTANTANEOUS_BLOOD_PRESSURE);
dataTypes.add(HealthDataTypes.DT_INSTANTANEOUS_BLOOD_GLUCOSE);
dataTypes.add(HealthDataTypes.DT_INSTANTANEOUS_SPO2);
Task<
Map
<DataType, SamplePoint>> readLatestDatas
=
dataController.readLatestData(dataTypes);
/
/
2.
Calling the data controller to query the latest data
is
an asynchronous operation.
/
/
Therefore, a listener needs to be registered to monitor whether the data query
is
successful
or
not
.
readLatestDatas.addOnSuccessListener(new OnSuccessListener<
Map
<DataType, SamplePoint>>() {
@Override
public void onSuccess(
Map
<DataType, SamplePoint> samplePointMap) {
logger(
"Success read latest data from HMS core"
);
if
(samplePointMap !
=
null) {
for
(DataType dataType : dataTypes) {
if
(samplePointMap.containsKey(dataType)) {
showSamplePoint(samplePointMap.get(dataType));
handleData(dataType);
}
else
{
logger(
"The DataType "
+
dataType.getName()
+
" has no latest data"
);
}
}
}
}
});
readLatestDatas.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
String errorCode
=
e.getMessage();
String errorMsg
=
HiHealthStatusCodes.getStatusCodeMessage(Integer.parseInt(errorCode));
logger(errorCode
+
": "
+
errorMsg);
}
});
}