1.Необходимо подписаться на конкретный тип данных и addDataType в fitnessoption.builder, если вы хотите получить конкретный тип данных, верно?
Например
FitnessOptions fitnessOptions =
FitnessOptions.builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA)
.addDataType(DataType.TYPE_CALORIES_EXPENDED)
и
Fitness.getRecordingClient(this, GoogleSignIn.getLastSignedInAccount(this))
.subscribe(DataType.TYPE_CALORIES_EXPENDED)
Однако я не могу добавить болееодна подписка в getRecordingClient.Мне нужно будет получить много разных типов данных.Есть ли способ подписать тип данных в одном блоке кода?Или что мне делать?
Вторая проблема заключается в том, что когда я делаю конструктор запросов на чтение, я собираю два разных типа данных в одну корзину, как это
Task<DataReadResponse> response = Fitness.getHistoryClient(this, GoogleSignIn.getLastSignedInAccount(this))
.readData(new DataReadRequest.Builder()
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
.aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA)
.aggregate(DataType.TYPE_CALORIES_EXPENDED, DataType.AGGREGATE_CALORIES_EXPENDED)
В этом ведре должно быть 2 набора данных, верно?Можно ли как-то повторить оба набора данных одновременно, чтобы я мог распечатать их в одном цикле for (:)?
Как это
for (DataPoint dataPoint : bucket.getDataSet(DataType.TYPE_CALORIES_EXPENDED).getDataPoints()) {
//stepObject.setSteps(dataPoint.getValue(Field.FIELD_STEPS).asString());
//Log.i(TAG, "Steps" + dataPoint.getValue(Field.FIELD_STEPS).asInt());
//Log.i(TAG, "Distance" + dataPoint.getValue(Field.FIELD_DISTANCE).asFloat());
Log.i(TAG, "Calories: " + dataPoint.getValue(Field.FIELD_CALORIES).asFloat());
}