com.google.android.gms.fitness.data.Bucket Java Examples
The following examples show how to use
com.google.android.gms.fitness.data.Bucket.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: GoogleFit.java From cordova-plugin-googlefit with MIT License | 6 votes |
/** * Convert a list of Buckets into its JSON representation * @param bucketSet * @return */ private JSONArray convertBucketsToJson(List<Bucket> bucketSet) { JSONArray buckets = new JSONArray(); for(Bucket b : bucketSet) { JSONObject b_ = new JSONObject(); try { b_.put("start", b.getStartTime(TimeUnit.MILLISECONDS)); b_.put("end", b.getEndTime(TimeUnit.MILLISECONDS)); b_.put("type", b.getBucketType()); b_.put("activity", b.getActivity()); b_.put("datasets", convertDatasetsToJson(b.getDataSets())); } catch (JSONException e) { e.printStackTrace(); } buckets.put(b_); } return buckets; }
Example #2
Source File: GoogleFit.java From cordova-plugin-googlefit with MIT License | 6 votes |
/** * Convert a list of Buckets into its JSON representation * @param bucketSet * @return */ private JSONArray convertBucketsToJson(List<Bucket> bucketSet) { JSONArray buckets = new JSONArray(); for(Bucket b : bucketSet) { JSONObject b_ = new JSONObject(); try { b_.put("start", b.getStartTime(TimeUnit.MILLISECONDS)); b_.put("end", b.getEndTime(TimeUnit.MILLISECONDS)); b_.put("type", b.getBucketType()); b_.put("activity", b.getActivity()); b_.put("datasets", convertDatasetsToJson(b.getDataSets())); } catch (JSONException e) { e.printStackTrace(); } buckets.put(b_); } return buckets; }
Example #3
Source File: Manager.java From react-native-fitness with MIT License | 5 votes |
public void getDistance(Context context, double startDate, double endDate, String customInterval, final Promise promise) { TimeUnit interval = getInterval(customInterval); DataReadRequest readRequest = new DataReadRequest.Builder() .aggregate(DataType.TYPE_DISTANCE_DELTA, DataType.AGGREGATE_DISTANCE_DELTA) .bucketByTime(1, interval) .setTimeRange((long) startDate, (long) endDate, TimeUnit.MILLISECONDS) .build(); Fitness.getHistoryClient(context, GoogleSignIn.getLastSignedInAccount(context)) .readData(readRequest) .addOnSuccessListener(new OnSuccessListener<DataReadResponse>() { @Override public void onSuccess(DataReadResponse dataReadResponse) { if (dataReadResponse.getBuckets().size() > 0) { WritableArray distances = Arguments.createArray(); for (Bucket bucket : dataReadResponse.getBuckets()) { List<DataSet> dataSets = bucket.getDataSets(); for (DataSet dataSet : dataSets) { processDistance(dataSet, distances); } } promise.resolve(distances); } } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { promise.reject(e); } }) .addOnCompleteListener(new OnCompleteListener<DataReadResponse>() { @Override public void onComplete(@NonNull Task<DataReadResponse> task) { } }); }
Example #4
Source File: Manager.java From react-native-fitness with MIT License | 5 votes |
public void getCalories(Context context, double startDate, double endDate, String customInterval, final Promise promise) { TimeUnit interval = getInterval(customInterval); DataReadRequest readRequest = new DataReadRequest.Builder() .aggregate(DataType.TYPE_CALORIES_EXPENDED, DataType.AGGREGATE_CALORIES_EXPENDED) .bucketByTime(1, interval) .setTimeRange((long) startDate, (long) endDate, TimeUnit.MILLISECONDS) .build(); Fitness.getHistoryClient(context, GoogleSignIn.getLastSignedInAccount(context)) .readData(readRequest) .addOnSuccessListener(new OnSuccessListener<DataReadResponse>() { @Override public void onSuccess(DataReadResponse dataReadResponse) { if (dataReadResponse.getBuckets().size() > 0) { WritableArray calories = Arguments.createArray(); for (Bucket bucket : dataReadResponse.getBuckets()) { List<DataSet> dataSets = bucket.getDataSets(); for (DataSet dataSet : dataSets) { processDistance(dataSet, calories); } } promise.resolve(calories); } } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { promise.reject(e); } }) .addOnCompleteListener(new OnCompleteListener<DataReadResponse>() { @Override public void onComplete(@NonNull Task<DataReadResponse> task) { } }); }
Example #5
Source File: Manager.java From react-native-fitness with MIT License | 5 votes |
public void getHeartRate(Context context, double startDate, double endDate, String customInterval,final Promise promise) { TimeUnit interval = getInterval(customInterval); DataReadRequest readRequest = new DataReadRequest.Builder() .aggregate(DataType.TYPE_HEART_RATE_BPM, DataType.AGGREGATE_HEART_RATE_SUMMARY) .bucketByTime(1, interval) .setTimeRange((long) startDate, (long) endDate, TimeUnit.MILLISECONDS) .build(); Fitness.getHistoryClient(context, GoogleSignIn.getLastSignedInAccount(context)) .readData(readRequest) .addOnSuccessListener(new OnSuccessListener<DataReadResponse>() { @Override public void onSuccess(DataReadResponse dataReadResponse) { if (dataReadResponse.getBuckets().size() > 0) { WritableArray heartRates = Arguments.createArray(); for (Bucket bucket : dataReadResponse.getBuckets()) { List<DataSet> dataSets = bucket.getDataSets(); for (DataSet dataSet : dataSets) { processHeartRate(dataSet, heartRates); } } promise.resolve(heartRates); } } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { promise.reject(e); } }) .addOnCompleteListener(new OnCompleteListener<DataReadResponse>() { @Override public void onComplete(@NonNull Task<DataReadResponse> task) { } }); }
Example #6
Source File: UserFragment.java From android-kubernetes-blockchain with Apache License 2.0 | 5 votes |
public void getDataSetsFromBucket(DataReadResponse dataReadResult) { // number of buckets would always be 1 (bucket size was set to 365 days in readRequest) if (dataReadResult.getBuckets().size() > 0) { Log.d(TAG, "Number of returned buckets of DataSets is: " + dataReadResult.getBuckets().size()); for (Bucket bucket : dataReadResult.getBuckets()) { List<DataSet> dataSets = bucket.getDataSets(); for (DataSet dataSet : dataSets) { parseDataSet(dataSet); } } } }
Example #7
Source File: JSONEncoder.java From react-native-google-fitness with MIT License | 5 votes |
public static WritableNativeArray convertBuckets(List<Bucket> buckets) { WritableNativeArray jsonBuckets = new WritableNativeArray(); for (Bucket bucket : buckets) { WritableNativeMap jsonBucket = new WritableNativeMap(); jsonBucket.putString("start", dateFormat.format(bucket.getStartTime(TimeUnit.MILLISECONDS))); jsonBucket.putString("end", dateFormat.format(bucket.getEndTime(TimeUnit.MILLISECONDS))); jsonBucket.putInt("type", bucket.getBucketType()); jsonBucket.putString("activity", bucket.getActivity()); jsonBucket.putArray("dataSets", convertDataSets(bucket.getDataSets())); jsonBuckets.pushMap(jsonBucket); } return jsonBuckets; }
Example #8
Source File: CalorieHistory.java From react-native-google-fit with MIT License | 5 votes |
private float getBasalAVG(long _et) throws Exception { float basalAVG = 0; Calendar cal = java.util.Calendar.getInstance(); cal.setTime(new Date(_et)); //set start time to a week before end time cal.add(Calendar.WEEK_OF_YEAR, -1); long nst = cal.getTimeInMillis(); DataReadRequest.Builder builder = new DataReadRequest.Builder(); builder.aggregate(DataType.TYPE_BASAL_METABOLIC_RATE, DataType.AGGREGATE_BASAL_METABOLIC_RATE_SUMMARY); builder.bucketByTime(1, TimeUnit.DAYS); builder.setTimeRange(nst, _et, TimeUnit.MILLISECONDS); DataReadRequest readRequest = builder.build(); DataReadResult dataReadResult = Fitness.HistoryApi.readData(googleFitManager.getGoogleApiClient(), readRequest).await(); if (dataReadResult.getStatus().isSuccess()) { JSONObject obj = new JSONObject(); int avgsN = 0; for (Bucket bucket : dataReadResult.getBuckets()) { // in the com.google.bmr.summary data type, each data point represents // the average, maximum and minimum basal metabolic rate, in kcal per day, over the time interval of the data point. DataSet ds = bucket.getDataSet(DataType.AGGREGATE_BASAL_METABOLIC_RATE_SUMMARY); for (DataPoint dp : ds.getDataPoints()) { float avg = dp.getValue(Field.FIELD_AVERAGE).asFloat(); basalAVG += avg; avgsN++; } } // do the average of the averages if (avgsN != 0) basalAVG /= avgsN; // this a daily average return basalAVG; } else throw new Exception(dataReadResult.getStatus().getStatusMessage()); }
Example #9
Source File: StepsHelper.java From drip-steps with Apache License 2.0 | 5 votes |
public void fetchStepsCount() { ex.execute(new Runnable() { @Override public void run() { // Find steps from Fitness API DataReadRequest r = queryFitnessData(); DataReadResult dataReadResult = Fitness.HistoryApi.readData(client, r).await(1, TimeUnit.MINUTES); boolean stepsFetched = false; if (dataReadResult.getBuckets().size() > 0) { Bucket bucket = dataReadResult.getBuckets().get(0); DataSet ds = bucket.getDataSet(DataType.TYPE_STEP_COUNT_DELTA); if (ds != null) { for (DataPoint dp : ds.getDataPoints()) { for (Field field : dp.getDataType().getFields()) { if (field.getName().equals("steps")) { stepsFetched = true; listener.onStepsCountFetched(dp.getValue(field).asInt()); } } } } } if (!stepsFetched) { // No steps today yet or no fitness data available listener.onStepsCountFetched(0); } } }); }
Example #10
Source File: Manager.java From react-native-fitness with MIT License | 4 votes |
public void getSteps(Context context, double startDate, double endDate, String customInterval, final Promise promise){ DataSource ESTIMATED_STEP_DELTAS = new DataSource.Builder() .setDataType(DataType.TYPE_STEP_COUNT_DELTA) .setType(DataSource.TYPE_DERIVED) .setStreamName("estimated_steps") .setAppPackageName("com.google.android.gms") .build(); TimeUnit interval = getInterval(customInterval); DataReadRequest readRequest = new DataReadRequest.Builder() .aggregate(ESTIMATED_STEP_DELTAS, DataType.AGGREGATE_STEP_COUNT_DELTA) .bucketByTime(1, interval) .setTimeRange((long) startDate, (long) endDate, TimeUnit.MILLISECONDS) .build(); Fitness.getHistoryClient(context, GoogleSignIn.getLastSignedInAccount(context)) .readData(readRequest) .addOnSuccessListener(new OnSuccessListener<DataReadResponse>() { @Override public void onSuccess(DataReadResponse dataReadResponse) { if (dataReadResponse.getBuckets().size() > 0) { WritableArray steps = Arguments.createArray(); for (Bucket bucket : dataReadResponse.getBuckets()) { List<DataSet> dataSets = bucket.getDataSets(); for (DataSet dataSet : dataSets) { processStep(dataSet, steps); } } promise.resolve(steps); } } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { promise.reject(e); } }) .addOnCompleteListener(new OnCompleteListener<DataReadResponse>() { @Override public void onComplete(@NonNull Task<DataReadResponse> task) { } }); }
Example #11
Source File: ActivityHistory.java From react-native-google-fit with MIT License | 4 votes |
public ReadableArray getActivitySamples(long startTime, long endTime) { WritableArray results = Arguments.createArray(); DataReadRequest readRequest = new DataReadRequest.Builder() .aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA) .aggregate(DataType.TYPE_CALORIES_EXPENDED, DataType.AGGREGATE_CALORIES_EXPENDED) .aggregate(DataType.TYPE_DISTANCE_DELTA, DataType.AGGREGATE_DISTANCE_DELTA) .bucketByActivitySegment(1, TimeUnit.SECONDS) .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) .build(); DataReadResult dataReadResult = Fitness.HistoryApi.readData(googleFitManager.getGoogleApiClient(), readRequest).await(1, TimeUnit.MINUTES); List<Bucket> buckets = dataReadResult.getBuckets(); for (Bucket bucket : buckets) { String activityName = bucket.getActivity(); int activityType = bucket.getBucketType(); if (!bucket.getDataSets().isEmpty()) { long start = bucket.getStartTime(TimeUnit.MILLISECONDS); long end = bucket.getEndTime(TimeUnit.MILLISECONDS); Date startDate = new Date(start); Date endDate = new Date(end); WritableMap map = Arguments.createMap(); map.putDouble("start",start); map.putDouble("end",end); map.putString("activityName", activityName); String deviceName = ""; String sourceId = ""; boolean isTracked = true; for (DataSet dataSet : bucket.getDataSets()) { for (DataPoint dataPoint : dataSet.getDataPoints()) { try { int deviceType = dataPoint.getOriginalDataSource().getDevice().getType(); if (deviceType == TYPE_WATCH) { deviceName = "Android Wear"; } else { deviceName = "Android"; } } catch (Exception e) { } sourceId = dataPoint.getOriginalDataSource().getAppPackageName(); if (startDate.getTime() % 1000 == 0 && endDate.getTime() % 1000 == 0) { isTracked = false; } for (Field field : dataPoint.getDataType().getFields()) { String fieldName = field.getName(); switch (fieldName) { case STEPS_FIELD_NAME: map.putInt("quantity", dataPoint.getValue(field).asInt()); break; case DISTANCE_FIELD_NAME: map.putDouble(fieldName, dataPoint.getValue(field).asFloat()); break; case CALORIES_FIELD_NAME: map.putDouble(fieldName, dataPoint.getValue(field).asFloat()); default: Log.w(TAG, "don't specified and handled: " + fieldName); } } } } map.putString("device", deviceName); map.putString("sourceName", deviceName); map.putString("sourceId", sourceId); map.putBoolean("tracked", isTracked); results.pushMap(map); } } return results; }