Я использую Google Fit Api в своем проекте, чтобы получать ежедневные шаги пользователя. Но проблема в том, что пользователь может вводить шаги вручную, добавляя действия. И когда я получаю ежедневные шаги, Google Fit Api также возвращает шаги, которые были добавлены вручную. Есть ли способ различать шаги, добавленные вручную, и шаги, записанные датчиком.
Как отличить шаги, добавленные вручную, от шагов, записанных датчиком, в Google Fit Api
Ответы (2)
Вот как я решил эту проблему.
final DataReadRequest readRequest = new DataReadRequest.Builder()
.read(googleFitUtils.getEstimatedSteps())
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
.build();
DataReadResult dataReadResult =
Fitness.HistoryApi.readData(mGoogleApiFitnessClient, readRequest).await(1, TimeUnit.MINUTES);
DataSet stepData = dataReadResult.getDataSet(DataType.TYPE_STEP_COUNT_DELTA);
int totalSteps = 0;
for (DataPoint dp : stepData.getDataPoints()) {
for(Field field : dp.getDataType().getFields()) {
int steps = dp.getValue(field).asInt();
if (!"user_input".equals(dp.getOriginalDataSource().getStreamName()))
totalSteps += steps;
}
}
Первая точка -> До того, как я получил общее количество шагов, используя
Fitness.HistoryApi.readDailyTotal
который возвращает одну точку данных с общим количеством ежедневных шагов. Второй пункт -> Затем я изменил способ получения ежедневных шагов, используя
Fitness.HistoryApi.readData
Он возвращает массив точек данных с фрагментами ежедневных шагов. Каждая точка данных имеет свойство
dp.getOriginalDataSource().getStreamName()
который возвращает вам тип, либо шаги были записаны датчиком, либо это был ввод использования. Вот как вы можете фильтровать шаги пользовательского ввода, чтобы избежать взлома шагов в вашем приложении.
По сути, в примере, приведенном в документации Google Fit, говорится, что вы можете получить базовое количество ежедневных шагов вашего устройства, используя этот метод.
Ваше приложение может записывать количество шагов пользователя с помощью Recording. API для создания подписки на тип данных
DataType.TYPE_STEP_COUNT_CUMULATIVE
В вашем случае вы получаете совокупные данные, которые представляют собой комбинацию записанных датчиком шагов и данных, извлеченных с использованием Исторический API.
Попробуйте ознакомиться с основными API Google Fit, которые вам понадобятся:
- API датчиков
- API записи
- История API
- API сеансов
- API целей
- API Bluetooth с низким энергопотреблением
- API конфигурации