use of com.google.android.gms.fitness.data.DataSet in project capacitor-google-fit by perfood.
the class GoogleFitPlugin method getHistoryActivity.
@PluginMethod
public Task<DataReadResponse> getHistoryActivity(final PluginCall call) throws ParseException {
final GoogleSignInAccount account = getAccount();
if (account == null) {
call.reject("No access");
return null;
}
long startTime = dateToTimestamp(call.getString("startTime"));
long endTime = dateToTimestamp(call.getString("endTime"));
if (startTime == -1 || endTime == -1) {
call.reject("Must provide a start time and end time");
return null;
}
DataReadRequest readRequest = new DataReadRequest.Builder().aggregate(DataType.TYPE_STEP_COUNT_DELTA).aggregate(DataType.AGGREGATE_STEP_COUNT_DELTA).aggregate(DataType.TYPE_DISTANCE_DELTA).aggregate(DataType.AGGREGATE_DISTANCE_DELTA).aggregate(DataType.TYPE_SPEED).aggregate(DataType.TYPE_CALORIES_EXPENDED).aggregate(DataType.AGGREGATE_CALORIES_EXPENDED).aggregate(DataType.TYPE_WEIGHT).setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS).bucketByActivitySegment(1, TimeUnit.MINUTES).enableServerQueries().build();
return Fitness.getHistoryClient(getActivity(), account).readData(readRequest).addOnSuccessListener(new OnSuccessListener<DataReadResponse>() {
@Override
public void onSuccess(DataReadResponse dataReadResponse) {
List<Bucket> buckets = dataReadResponse.getBuckets();
JSONArray activities = new JSONArray();
for (Bucket bucket : buckets) {
JSONObject summary = new JSONObject();
try {
summary.put("start", timestampToDate(bucket.getStartTime(TimeUnit.MILLISECONDS)));
summary.put("end", timestampToDate(bucket.getEndTime(TimeUnit.MILLISECONDS)));
List<DataSet> dataSets = bucket.getDataSets();
for (DataSet dataSet : dataSets) {
if (dataSet.getDataPoints().size() > 0) {
switch(dataSet.getDataType().getName()) {
case "com.google.distance.delta":
summary.put("distance", dataSet.getDataPoints().get(0).getValue(Field.FIELD_DISTANCE));
break;
case "com.google.speed.summary":
summary.put("speed", dataSet.getDataPoints().get(0).getValue(Field.FIELD_AVERAGE));
break;
case "com.google.calories.expended":
summary.put("calories", dataSet.getDataPoints().get(0).getValue(Field.FIELD_CALORIES));
break;
case "com.google.weight.summary":
summary.put("weight", dataSet.getDataPoints().get(0).getValue(Field.FIELD_AVERAGE));
break;
case "com.google.step_count.delta":
summary.put("steps", dataSet.getDataPoints().get(0).getValue(Field.FIELD_STEPS));
break;
default:
Log.i(TAG, "need to handle " + dataSet.getDataType().getName());
}
}
}
summary.put("activity", bucket.getActivity());
} catch (JSONException e) {
call.reject(e.getMessage());
return;
}
activities.put(summary);
}
JSObject result = new JSObject();
result.put("activities", activities);
call.resolve(result);
}
});
}
use of com.google.android.gms.fitness.data.DataSet in project capacitor-google-fit by perfood.
the class GoogleFitPlugin method getHistory.
@PluginMethod
public Task<DataReadResponse> getHistory(final PluginCall call) throws ParseException {
GoogleSignInAccount account = getAccount();
if (account == null) {
call.reject("No access");
return null;
}
long startTime = dateToTimestamp(call.getString("startTime"));
long endTime = dateToTimestamp(call.getString("endTime"));
if (startTime == -1 || endTime == -1) {
call.reject("Must provide a start time and end time");
return null;
}
DataReadRequest readRequest = new DataReadRequest.Builder().aggregate(DataType.TYPE_DISTANCE_DELTA).aggregate(DataType.AGGREGATE_DISTANCE_DELTA).aggregate(DataType.TYPE_SPEED).aggregate(DataType.TYPE_CALORIES_EXPENDED).aggregate(DataType.AGGREGATE_CALORIES_EXPENDED).setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS).bucketByTime(1, TimeUnit.DAYS).enableServerQueries().build();
return Fitness.getHistoryClient(getActivity(), account).readData(readRequest).addOnSuccessListener(new OnSuccessListener<DataReadResponse>() {
@Override
public void onSuccess(DataReadResponse dataReadResponse) {
List<Bucket> buckets = dataReadResponse.getBuckets();
JSONArray days = new JSONArray();
for (Bucket bucket : buckets) {
JSONObject summary = new JSONObject();
try {
summary.put("start", timestampToDate(bucket.getStartTime(TimeUnit.MILLISECONDS)));
summary.put("end", timestampToDate(bucket.getEndTime(TimeUnit.MILLISECONDS)));
List<DataSet> dataSets = bucket.getDataSets();
for (DataSet dataSet : dataSets) {
if (dataSet.getDataPoints().size() > 0) {
switch(dataSet.getDataType().getName()) {
case "com.google.distance.delta":
summary.put("distance", dataSet.getDataPoints().get(0).getValue(Field.FIELD_DISTANCE));
break;
case "com.google.speed.summary":
summary.put("speed", dataSet.getDataPoints().get(0).getValue(Field.FIELD_AVERAGE));
break;
case "com.google.calories.expended":
summary.put("calories", dataSet.getDataPoints().get(0).getValue(Field.FIELD_CALORIES));
break;
default:
Log.i(TAG, "need to handle " + dataSet.getDataType().getName());
}
}
}
} catch (JSONException e) {
call.reject(e.getMessage());
return;
}
days.put(summary);
}
JSObject result = new JSObject();
result.put("days", days);
call.resolve(result);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
call.reject(e.getMessage());
}
});
}
Aggregations