Как получить данные активного времени из Samsung Health в моем приложении android - PullRequest
0 голосов
/ 10 марта 2020

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

    public 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();
    }
}
...