Как сбросить значение шага (dataPoint.getValue (поле)) в ondataPoint func google fit

Я пытаюсь подсчитать шаг от пользователя. Я использую Google Fit API, но есть кое-что, чего я не понял. Прежде всего, вот мой код:

    private void setUpGoogleApiClient() {
    apiClient = new GoogleApiClient.Builder(this)
            .addApi(Fitness.SENSORS_API)
            .addApi(ActivityRecognition.API)
            .addApi(Fitness.HISTORY_API)
            .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
}

 @Override
public void onDataPoint(DataPoint dataPoint) {
    for (final Field field : dataPoint.getDataType().getFields()) {
        final Value value = dataPoint.getValue(field);
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                stepCount.setText(value.toString());
                if (DetectManager.getInstance(MainActivity.this).getMovementAsJson() != null)
                    fieldName.setText(DetectManager.getInstance(MainActivity.this).getMovementAsJson().getMovement());
                totalKmsDone = (float) value.asInt();
                Log.e("Steps: ", "Value " + value.toString());

                totalCaloriesBurned.setText(calories.calculateCalories((int) totalKmsDone, MainActivity.this));
                distance.setText(calories.calculateDistance((int) totalKmsDone, MainActivity.this));
                historyManager.animateTheView((int) (totalKmsDone / 10000 * 100), value.asInt(), Constant.AT_THE_MOMENT_STEP_COLOR, goal_indicator_view, null);
            }
        });
    }
}

@Override
public void onConnected(@Nullable Bundle bundle) {
    Intent intent = new Intent(this, ActivityRecognizedService.class);
    PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(apiClient, 3000, pendingIntent);

    DataSourcesRequest dataSourceRequest = new DataSourcesRequest.Builder()
            .setDataTypes(DataType.TYPE_STEP_COUNT_CUMULATIVE)
            .setDataSourceTypes(DataSource.TYPE_DERIVED)
            .build();

    ResultCallback<DataSourcesResult> dataSourcesResultCallback = new ResultCallback<DataSourcesResult>() {
        @Override
        public void onResult(DataSourcesResult dataSourcesResult) {
            for (DataSource dataSource : dataSourcesResult.getDataSources()) {
                if (DataType.TYPE_STEP_COUNT_CUMULATIVE.equals(dataSource.getDataType())) {
                    registerFitnessDataListener(dataSource, DataType.TYPE_STEP_COUNT_CUMULATIVE);
                }
            }
        }
    };
    Fitness.SensorsApi.findDataSources(apiClient, dataSourceRequest).setResultCallback(dataSourcesResultCallback);
}

    private void registerFitnessDataListener(DataSource dataSource, DataType dataType) {

    SensorRequest request = new SensorRequest.Builder()
            .setDataSource(dataSource)
            .setDataType(dataType)
            .setSamplingRate(3, TimeUnit.SECONDS)
            .build();

    Fitness.SensorsApi.add(apiClient, request, this)
            .setResultCallback(new ResultCallback<Status>() {
                @Override
                public void onResult(Status status) {
                    if (status.isSuccess()) {

                    }
                }
            });
}

Мой вопрос: 1. Как ежедневно сбрасывать значение (dataPoint.getValue (поле);). Я хочу просто считать шаги от пользователя ежедневно.

  1. Я изменил DataType.TYPE_STEP_COUNT_CUMULATIVE на DataType.TYPE_STEP_COUNT_DELTA, но это не сработало. Я тестировал снова и снова, но это не сработало с DataType.TYPE_STEP_COUNT_DELTA. Я думаю, что это проблема. Может ли кто-нибудь сказать мне, как я могу вызвать DataType.TYPE_STEP_COUNT_DELTA?

Спасибо за помощь.


person Olcay Sönmez    schedule 27.10.2016    source источник
comment
Вы можете проверить этот похожий поток.   -  person noogui    schedule 29.10.2016
comment
Привет @noogui, на самом деле я не использую сенсорную память для этого. Я использую Google Fit API и считаю stpes с помощью функции onDataPoint. который переопределен, поэтому я думаю, что ссылка выше дает мне некоторое представление, но это не сработало.   -  person Olcay Sönmez    schedule 31.10.2016