Skip to content Skip to sidebar Skip to footer

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"