public static interface HealthDataResolver.ReadRequest
ReadRequest
You can make a request instance with ReadRequest.Builder.build().
You can read Samsung Health's health data with HealthDataResolver.read().
startTime
endTime
// The state of connection private final HealthDataStore mStore; public static final String APP_TAG = "MyApp"; private static final long ONE_DAY_IN_MILLIS = 24 * 60 * 60 * 1000L; private long getStartTimeOfToday() { Calendar today = Calendar.getInstance(TimeZone.getTimeZone("UTC")); today.set(Calendar.HOUR_OF_DAY, 0); today.set(Calendar.MINUTE, 0); today.set(Calendar.SECOND, 0); today.set(Calendar.MILLISECOND, 0); return today.getTimeInMillis(); }
ReadRequest.Builder.build()
private void readTodayStepCount() { // Set time range from start time of today to the current time long startTime = getStartTimeOfToday(); long endTime = startTime + ONE_DAY_IN_MILLIS; HealthDataResolver.ReadRequest request = new ReadRequest.Builder() .setDataType(HealthConstants.StepCount.HEALTH_DATA_TYPE) .setProperties(new String[] {HealthConstants.StepCount.COUNT}) .setLocalTimeRange(HealthConstants.StepCount.START_TIME, HealthConstants.StepCount.TIME_OFFSET, startTime, endTime) .build();
ReadRequest.read()
HealthDataResolver resolver = new HealthDataResolver(mStore, null); try { resolver.read(request).setResultListener(mListener); } catch (Exception e) { Log.d(MyApp, "Getting step count fails."); } }
COUNT
private final HealthResultHolder.ResultListener<ReadResult> mListener = new HealthResultHolder.ResultListener<ReadResult>() { @Override public void onResult(ReadResult result) { int count = 0; try { Iterator<HealthData> iterator = result.iterator(); if (iterator.hasNext()) { HealthData data = iterator.next(); count += data.getInt(HealthConstants.StepCount.COUNT); } } finally { result.close(); } } };
static class
HealthDataResolver.ReadRequest.Builder
HealthDataResolver.ReadRequest