Google Fit Api Sleep Insert And Read Datapoint In Session
I try (like in the topic described) to insert and read Sleep as an Fitness Activity. Main Goal is to analyse a whole sleep with (when was Light/deep sleep and how long) for a singl
Solution 1:
5 days to solve the insert session on GoogleFit.... That's my code:
Log.d(iKcal.TAG + "/" + TAG, "Inserting sessions on GoogleFit ...");
DataSourceactivitySegmentDataSource=newDataSource.Builder()
.setAppPackageName(fragmentActivity.getPackageName())
.setDataType(DataType.TYPE_ACTIVITY_SEGMENT)
.setName("Activity")
.setType(DataSource.TYPE_RAW)
.build();
DataSourcekcalSegmentDataSource=newDataSource.Builder()
.setAppPackageName(fragmentActivity.getPackageName())
.setDataType(DataType.AGGREGATE_CALORIES_EXPENDED)
.setName("Kcal burned")
.setType(DataSource.TYPE_RAW)
.build();
DataSetactivityDataSet= DataSet.create(activitySegmentDataSource);
DataSetkcalDataSet= DataSet.create(kcalSegmentDataSource);
DataPointactivityDataPoint= activityDataSet.createDataPoint().setTimeInterval(fitness.getStart().getTime(), fitness.getEnd().getTime(), TimeUnit.MILLISECONDS);
activityDataPoint.getValue(Field.FIELD_ACTIVITY).setActivity(fitness.getFitnessActivity().getFitnessActivity());
activityDataSet.add(activityDataPoint);
DataPointkcalDataPoint= kcalDataSet.createDataPoint().setTimeInterval(fitness.getStart().getTime(), fitness.getEnd().getTime(), TimeUnit.MILLISECONDS);
kcalDataPoint.getValue(Field.FIELD_CALORIES).setFloat((float) (fitness.getKcal()));
kcalDataSet.add(kcalDataPoint);
Sessionsession=newSession.Builder()
.setName(fragmentActivity.getResources().getString(fitness.getFitnessActivity().getName()))
.setIdentifier(fragmentActivity.getString(R.string.app_name) + "_" + fitness.getFitnessID()) // ID FITNESS DB
.setDescription(fitness.getComments())
.setStartTime(fitness.getStart().getTime(), TimeUnit.MILLISECONDS)
.setEndTime(fitness.getEnd().getTime(), TimeUnit.MILLISECONDS)
.setActivity(fitness.getFitnessActivity().getFitnessActivity())
.build();
SessionInsertRequestinsertRequest=newSessionInsertRequest.Builder()
.setSession(session)
.addDataSet(kcalDataSet) // Inserimento kcal//.addDataSet(activityDataSet) // Inserimento attività
.build();
PendingResult<com.google.android.gms.common.api.Status> pendingResult = Fitness.SessionsApi.insertSession(mGoogleApiClient, insertRequest);
pendingResult.setResultCallback(newResultCallback<com.google.android.gms.common.api.Status>() {
@OverridepublicvoidonResult(@NonNull com.google.android.gms.common.api.Status status) {
if (status.isSuccess())
onPostExecuteInsert(true);
else
onPostExecuteInsert(false);
}
});
}
privatevoidonPostExecuteInsert(boolean value){
FitnessActivityfitnessActivity= (FitnessActivity) fragmentActivity;
fitnessActivity.getLoadingDialog().dismiss();
if(value) {
Log.d(iKcal.TAG + "/" + TAG, "Session inserted on GoogleFit!");
Toast.makeText(fragmentActivity, R.string.aggiunto_fitness_db_fit, Toast.LENGTH_SHORT).show();
} else {
Log.d(iKcal.TAG + "/" + TAG, "Failed to insert session on GoogleFit!");
Toast.makeText(fragmentActivity, R.string.aggiunto_fitness_solo_db, Toast.LENGTH_SHORT).show();
}
fragmentActivity.startActivity(newIntent(fragmentActivity, MainActivity.class));
}
At the end I dismiss a Dialog and I call a new Activity but you can do everything. You don't receive results because it's return after 400-500 milliseconds.
The insert works perfectly but I can't read well: If I try to read in onCreate or onResume the first time doesn't work, but if I insert a new Session and read, works perfectly.
Post a Comment for "Google Fit Api Sleep Insert And Read Datapoint In Session"