This enumeration defines time units to group values of the aggregate result.
You can retrieve grouped result of
HealthDataResolver.agregate() with the specified time unit.
The time unit for grouping can be set with
HealthDataResolver.AggregateRequest.Builder.setTimeGroup().
Time information in the aggregate result is included as the following format for each time group unit.
| Time group unit |
Format |
MINUTELY |
yyyy-mm-dd hh:mm
(e.g. 2015-10-09 18:17)
|
HOURLY |
yyyy-mm-dd hh
(e.g. 2015-10-09 18)
|
DAILY |
yyyy-mm-dd
(e.g. 2015-10-09)
|
WEEKLY |
yyyy-ww
(e.g. 2015-41)
|
MONTHLY |
yyyy-mm
(e.g. 2015-10)
|
Getting Grouped Aggregate Result with Time Group Unit
If you requests hourly average steps on today, you can set the time
group unit for the aggregate request.
public class HealthDataResolverExample {
// The state of connection
private HealthDataStore mStore;
private void getHourlySteps(long startTime, long endTime) {
HealthDataResolver resolver = new HealthDataResolver(mStore, null);
HealthDataResolver.AggregateRequest request = new HealthDataResolver.AggregateRequest.Builder()
.setDataType(HealthConstants.StepCount.HEALTH_DATA_TYPE)
.setLocalTimeRange(HealthConstants.StepCount.START_TIME, HealthConstants.StepCount.TIME_OFFSET,
startTime, endTime)
.addFunction(HealthDataResolver.AggregateRequest.AggregateFunction.AVG,
HealthConstants.StepCount.COUNT, "average")
.setTimeGroup(HealthDataResolver.AggregateRequest.TimeGroupUnit.HOURLY, 1,
HealthConstants.StepCount.START_TIME,
HealthConstants.StepCount.TIME_OFFSET, "hour")
.build();
try {
resolver.aggregate(request).setResultListener(mStepAggrResult);
} catch (Exception e) {
Log.d(APP_TAG, "Aggregating health data fails.");
}
}
The retrieved result can be checked:
private final HealthResultHolder.ResultListener<HealthDataResolver.AggregateResult> mStepAggrResult=
new HealthResultHolder.ResultListener<HealthDataResolver.AggregateResult>() {
@Override
public void onResult(HealthDataResolver.AggregateResult result) {
try {
Iterator<HealthData> iterator = result.iterator();
if (iterator.hasNext()) {
HealthData data = iterator.next();
// Gets hour information as yyyy-mm-dd hh, e.g. 2015-10-09 18
String hour = data.getString("hour");
// Gets the average value for the current cursor
float avr = data.getFloat("average");
// ...
}
} finally {
result.close();
}
}
};
}