Samsung Health Дублированные ценности - PullRequest
1 голос
/ 10 марта 2020

У меня есть приложение android, которое считывает данные о состоянии здоровья из Samsung Health и просматривает их. Я добавил Samsung Health SDK версии 1.4.0 и начал получать данные с помощью HealthDataResolver.ReadRequest для считывания различных значений данных, таких как общее количество шагов, расстояние и активное время. Я мог прочитать количество шагов и расстояние от HealthConstants.StepCount. Я прочитал все записи шагов и вычислил сумму всех этих значений записей, но результат был равен числу шагов при выборе Мобильный телефон + Все шаги. У меня вопрос, как я могу выбрать данные, которые я хочу получить (мобильный телефон или все шаги).

private void readSteps(){ 
HealthDataResolver resolver = new HealthDataResolver(mStore, null);

HealthDataResolver.Filter filter = null;
if(mReadDataRequest.getStartTime() != 0.0)
    filter = HealthDataResolver.Filter.greaterThanEquals(HealthConstants.StepCount.START_TIME, mReadDataRequest.getStartTime());

HealthDataResolver.ReadRequest request = new HealthDataResolver.ReadRequest.Builder()
        .setDataType(HealthConstants.StepCount.HEALTH_DATA_TYPE)
        .setTimeBefore(Calendar.getInstance().getTimeInMillis())
        .setFilter(filter)
        .build();

try {
    resolver.read(request).setResultListener(result -> {
        ArrayList<BaseHealthKit> stepCounts = null;
        try {
            for (HealthData data : result) {
                int count = data.getInt(HealthConstants.StepCount.COUNT);
                double distance = data.getDouble(HealthConstants.StepCount.DISTANCE);
                String startTime = data.getString(HealthConstants.StepCount.START_TIME);
                String endTime = data.getString(HealthConstants.StepCount.END_TIME);
                float burnedCalorie = data.getFloat(HealthConstants.StepCount.CALORIE);

                if (stepCounts == null)
                    stepCounts = new ArrayList<>();

                StepCount stepCount = new StepCount();
                if (startTime != null)
                    stepCount.setStartTime(Long.parseLong(startTime));
                if (endTime != null)
                    stepCount.setEndTime(Long.parseLong(endTime));
                stepCount.setCount(count);
                stepCount.setDistance(distance);
                stepCount.setmBurnedCalories(burnedCalorie);
                stepCounts.add(stepCount);
            }
        } finally {
            result.close();
        }

        if (mReadDataListener != null)
            mReadDataListener.onSucceedReading(stepCounts);
    });
} catch (Exception e) {
    Log.e(TAG, "Getting sleep data fails.", e);
} finally {
    disconnect();
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...