Уже несколько недель я создаю довольно простое приложение, которое переносит активность с моего трекера Fitbit Flex на Google Fit. Все очень просто: он создал источники данных и использует их, чтобы увеличить количество калорий за последний час, количество шагов и расстояние до Google Fit. Это также увеличивает мой вес, если я войду в систему с помощью приложения Fitbit.
Каждый час эти три метрики помещаются в три разных набора данных, каждый из которых имеет одну точку данных. Например: с 10:00 до 10:59, 451 шаг. Это работает довольно хорошо для всех трех из этих метрик.
Раз в день набор данных в диапазоне от 00:00 до 23:59 отправляет мой вес в Google Fit. Этот набор данных также имеет одну точку данных.
Эта система, кажется, работает достаточно хорошо для моего количества шагов и моей калории. Это не идеально, потому что мой счетчик шагов без каких-либо связанных действий. Но Google Fit успешно принимает данные и сохраняет их.
Тем не менее, Google Fit, похоже, не увеличивает мой заявленный вес. Кроме того, Google Fit, похоже, не помнит расстояние, которое я предоставляю.
Типы данных, которые я использую:
Исходный код моего приложения находится на Github: https://github.com/JC5/fitsync
Любые советы или хитрости? Это то, что я мог бы использовать REST API для?
Да. это вопрос ведите меня в правильном направлении. Как оказалось, типы полей, которые я использую, являются мгновенными типами полей (см. Выше). Они измеряются только в один момент времени. Противоположным будет агрегированный тип поля.
Мой вес измеряется прямо здесь и сейчас, и значение не агрегируется за день или неделю, а одно мгновенное измерение. В этот момент я весил 82,1 кг.
Поэтому, когда вы создаете набор данных с одной точкой данных (что необходимо для отправки такого мгновенного типа поля в Google), вы должны убедиться, что время начала и время окончания совпадают. В конце концов, это не было бы правильной записью, если бы она не была мгновенной.
Набор данных, который я отправил в Google Fit, который правильно зарегистрирован в Google Fit, выглядит следующим образом:
{
"minStartTimeNs":1462358894000000000,
"maxEndTimeNs":1462358894000000000,
"dataSourceId":"your-data-id",
"point":[
{
"dataTypeName":"com.google.weight",
"originDataSourceId":"",
"startTimeNanos":1462358894000000000,
"endTimeNanos":1462358894000000000,
"value":[
{
"fpVal":81.2
}
]
}
]
}
Метрика расстояния еще не зарегистрирована, но там могут быть и другие недокументированные объекты.
Других решений пока нет …