Данные о фитнесе: объединение данных из нескольких источников

Дано:

Приложение собирает данные о шагах/расстоянии с фирменного фитнес-трекера. Эти данные разбиты на почасовые сеансы - например. «Сеанс 4:00–5:00, XX шагов, YY км».

Я хочу добиться согласованной передачи данных: Приложение -> API фитнеса (Google Fit, Health Kit), то есть: если API фитнеса уже имеет сеанс 4: 00-5:00 с шагом ZZ, потом данные как-то объединяются.

Очевидные проблемы возникают, если рассмотреть ситуацию: Трекер 1 привязан к приложению, Трекер 2 привязан напрямую к Fitness API, и пользователь носит оба одновременно. Затем два трекера имеют пересекающиеся промежутки времени с разными данными (например, 400 шагов на трекере 1, 720 шагов на трекере 2).

Вопросы:

  1. Как Google Fit/Health Kit объединяет точки данных с одинаковым/пересекающимся временным интервалом (в моем случае 4:00–5:00)? Это «всегда добавлять», даже если происходит перекрытие?
  2. Существуют ли какие-либо задокументированные подходы к выполнению такой синхронизации? Я бы очень приветствовал любую информацию, даже абстрактную стратегию синхронизации.
  3. Лучше ли вставлять «мгновенные» данные в Fitness API, а не агрегированные вручную (в сеансы)? Например. Я получаю мгновенные данные от Трекера, которые всегда представляют собой «общее количество шагов за текущий день», а затем передаю это количество в Google Fit/Health Kit.
  4. Если ответ на 3 «да», то будет ли хранилище Fitness автоматически разделять эти моменты на сеансы?

person Drew    schedule 10.05.2016    source источник


Ответы (1)


Вы можете агрегировать данные по

.aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA)

как описано здесь

person Waqar Khan    schedule 10.05.2016
comment
Да, могу, но что мне это дает в контексте моего вопроса? - person Drew; 10.05.2016
comment
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) В соответствии с документацией он должен агрегировать количество шагов в течение этого промежутка времени, а не перекрываться. - person Waqar Khan; 10.05.2016
comment
Хорошо, это, вероятно, поможет на стороне клиента. Нужно проверить - person Drew; 10.05.2016