2

I am trying to get weight from google fit using DataReadRequest with bucket time.

I am able to get weight data like below and store data in my collection.

 /**
 * Method is  use to read google fit response and store in collection
 *
 * @param dataReadResult google fit response
 */
private void readResponse(DataReadResponse dataReadResult) {
    ArrayList<ActivityLogModel> activityLogModels = new ArrayList<>();

    if (dataReadResult.getBuckets().size() > 0) {
        for (int i = 0; i < dataReadResult.getBuckets().size(); i++) {
            ActivityLogModel activityLogModel = new ActivityLogModel();
            activityLogModel.setType(dataReadResult.getBuckets().get(i).getActivity());
            activityLogModel.setStartTime(dateTimeFormat.format(dataReadResult.getBuckets().get(i).getStartTime(TimeUnit.MILLISECONDS)));
            activityLogModel.setEndTime(dateTimeFormat.format(dataReadResult.getBuckets().get(i).getEndTime(TimeUnit.MILLISECONDS)));
            ArrayList<FitnessDataTypeModel> datasetModels = new ArrayList<>();


            for (int j = 0; j < dataReadResult.getBuckets().get(i).getDataSets().size(); j++) {

                if (dataReadResult.getBuckets().get(i).getDataSets() != null) {
                    FitnessDataTypeModel dataTypeModel = new FitnessDataTypeModel();
                    ArrayList<DataPointModel> dataPointModels = new ArrayList<>();
                    for (DataPoint dataPoint : dataReadResult.getBuckets().get(i).getDataSets().get(j).getDataPoints()) {





                        ArrayList<FieldModel> fieldModels = new ArrayList<>();
                        DataPointModel dataPointModel = new DataPointModel();
                        dataPointModel.setStartTime(dateTimeFormat.format(dataPoint.getStartTime(TimeUnit.MILLISECONDS)));
                        dataPointModel.setEndTime(dateTimeFormat.format(dataPoint.getEndTime(TimeUnit.MILLISECONDS)));
                        dataPointModel.setType(dataPoint.getDataType().getName());


                        for (Field field : dataPoint.getDataType().getFields()) {



                            FieldModel fieldModel = new FieldModel(field.getName(), "" + dataPoint.getValue(field));

                            fieldModels.add(fieldModel);

                        }
                        dataPointModel.setFieldModels(fieldModels);
                        dataPointModels.add(dataPointModel);
                    }
                    if (dataPointModels.size() > 0) {
                        dataTypeModel.setDataPointModels(dataPointModels);

                    }
                    datasetModels.add(dataTypeModel);

                }

            }

            activityLogModel.setActivityModel(datasetModels);

            activityLogModels.add(activityLogModel);
        }

    }

I am fetching data from using field name and field value and store it in the model class. But when I am getting weight data I am not able to fetch weight unit.

Please, anyone, help me this how to fetch weight unit with weight.

Vishal Thakkar
  • 2,117
  • 2
  • 16
  • 33
  • Is it always kg?! See [Public Fitness Data Types](https://developers.google.com/fit/android/data-types#public_data_types) – Vall0n Apr 30 '19 at 08:00
  • @Vall0n I was already read it but if I add weight in google fit pound then it will not give any unit value it's just passed that value – Vishal Thakkar Apr 30 '19 at 08:04
  • Not sure if I understand you but I would say that is fine because they assume its kg. Maybe you have to convert the values by yourself. From pound to kg if you add weight to google fit. And if you get weight and you want it to be displayed in pound you have to convert kg to pound. I Don't know the api that much but that is what I think the docments says. – Vall0n May 02 '19 at 07:40
  • @Vall0n its provide converted value to kg always – Vishal Thakkar May 02 '19 at 11:16

0 Answers0