Снова Google Fit. Работает ли он?

в 11:43, , рубрики: Google API, google fit, гаджеты, Носимая электроника

Привет! Меня зовут Виктор, я разрабатываю веб-приложение catisfit.com для анализа данных Google Fit.

Ожидания

imageБольшая часть мобильных телефонов давно научилась считать шаги. Многие носят фитнес-браслеты и часы, пользуются спортивными трекерами типа Strava, становятся по утрам на умные весы, пытаются контролировать сон и ведут дневники питания. Некоторые даже используют смарт-тонометры и ботинки.

Все связанные с этими гаджетами приложения работают внутри себя, показывают графики, подсказывают, как надо есть, как двигаться и как легче достичь цели. Общее у них одно — они все, как правило умеют синхронизироваться с приложением Google Fit и через него обмениваться данными друг с другом. Милтрекер берет ваши шаги из приложения-браслета и пересчитывает калории с учетом активности, браслет берет вес и меняет цели. А Google Fit все это любезно собирает, хранит, подсчитывает и отдает.

Это я так думал, когда решил использовать его API чтобы создать сайт, где пользователь мог бы видеть все и сразу, в разрезе аналитики и сравнения.
Под катом — суровая реальность.

Реальность

image

Итак, “испытательное снаряжение”: 2 мобильника Samsung, трекеры MiBand3 и Misfit Shine, носимые вместе и по очереди, весы Mi Scale, милтрекер MyFitnessPal

Активность

Шаги. Казалось бы, все просто: есть 3 источника истины (мобильник+2 трекера). Надо считать общее количество шагов в день. Есть у GF специальные “агрегированные” запросы на этот случай.
Теперь про разницу показаний. Это разница значений MiBand (оранжевая линия) и приложения Google Fit (зеленая):

image

Разница показаний может достигать 50-100%! Какая уж тут статистика с аналитикой?..
Я писал в GF (без ответа, само собой), писал в глобальный саппорт Xiaomi ( посоветовали по-особому жестко переустановить приложение и если что, менять трекер).

Далее я понял, что все еще хуже.

Оказывается, гигантской разницы могут достигать показания в мобильном приложении Google Fit и в его же Google Fit API. Т.е. GF криво синхронизируется со своими же серверами. Народ робко вопрошает на StackOverflow и единственный совет от GF — изменить запрос (в принципе, иногда помогает если разница в значениях 1-5%, т. к. данные агрегируются по-разному).

Кстати, со временем (спустя 4-8 недель) с этими “внутренними” расхождениями происходит магия. Они как бы “сглаживаются”. Другими словами, статистика за август этого года будет сильно “правдивее” ноября. На этом графике включен “проблемный” период с ссылки выше:

image

Так вот сейчас показания Android-приложения и Rest для этого периода идентичны, хотя когда я задавал вопрос, разница также была колоссальной (до 100%). Плохо лишь то, что “сглаживаются” они по совершенно непонятному закону и почти всегда в меньшую от показаний браслетов сторону.

Если запариваться — каждый вечер запускать одновременно приложения браслетов и Google Fit, ждать, чтобы они друг с другом побыли наедине в памяти и в IU — расхождений и пропусков сильно меньше.

Когда телефон в международном роуминге (в нем я отключаю мобильные данные и пользуюсь только wifi в отелях/хотспотах) — беда. Вне зависимости от количества смарт-побрякушек и показаний на них, GF “обнуляет” целые недели. Причем иногда — еще несколько дней после прилета домой. Дни катания на лодке по России при временном (не более суток) отсутствии связи и Интернета тоже часто бывают обнулены.

Вес

Это единственное, с чем нет проблем. По крайней мере, если вставать на весы один раз утром. ) Нет ни пропусков, ни неточностей. Наверное, потому, что днем и вечером никто обычно не взвешивается и несколько разных весов дома не держит.

Питание

Здесь вопрос синхронизации с GF еще острее, чем с активностью. Т.е. если каждый вечер заполнять дневник питания в мобильном приложении, или на сайте, но синхронизировать с приложением — все ок. Если вы решите заполнить дневник за 3-4 прошедших дня — будьте готовы к тому, что в Google останутся только последние два:

image

Вот такие “ломаные” периоды c пропущеными днями. По факту, MyFitnessPal заполнен за весь период без пропусков.

Сон

В данных о сне, приходящих с браслета, как правило больше интересно качество, а не количество: фазы сна, продолжительность глубокого сна и пр. К сожалению, GF не различает разные фазы сна, под одним и тем же “activityType”: 72 приходят “Глубокий Сон” и “Неглубокий сон”. Разница только литеральная, значит для носителя каждого отдельного языка — своя. Т.е. на данный момент из API возможно оценить только общую продолжительность.

Вот собственно и вся картина на сегодня. Остается добавить, что внутри смартфона обмен этими данными между приложениями также довольно выборочный, специфический и главное — нестабильный.

Выводы

В целом проект GF на данный момент больше похож на непрофильную поделку китайского производителя гаджетов, работающую на “отстань, маркетолог”. Но не компании, которая прямо сейчас покупает Fitbit и по местным слухам хочет стать глобальным оператором медицинских данных.

Остается надеяться, что с этими изменениями у GF появятся более конкретные цели, проекту начнут уделять больше внимания, и точность данных хотя бы примерно будет соответствовать действительности.

Автор: Torkins

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js