Как различить шаги, добавленные вручную, и шаги, записанные датчиком в Google Fit Api - PullRequest
0 голосов
/ 08 января 2019

Я использую Google Fit Api в своем проекте для получения ежедневных шагов пользователя. Но проблема в том, что пользователь может вводить шаги вручную, добавляя действия. И когда я получаю ежедневные шаги, Google Fit Api также возвращает шаги, которые были добавлены вручную. Есть ли способ различить шаги, добавленные вручную, и шаги, записанные датчиком.

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Вот как я решил эту проблему.

   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()

, который возвращает вам тип, либо шаги были записаны датчиком, либо это был ввод использования. Вот как вы можете отфильтровать шаги пользовательского ввода, чтобы избежать взлома шагов в вашем приложении.

0 голосов
/ 09 января 2019

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

Ваше приложение может записывать количество шагов пользователя, используя Запись API создать подписку на DataType.TYPE_STEP_COUNT_CUMULATIVE тип данных

В вашем случае вы получаете совокупные данные, которые представляют собой комбинацию записанных датчиком шагов и данных, извлеченных с использованием History API .

Попробуйте проверить необходимый Google Fit API , который вам понадобится:

...