I want weekly Sleep data from google fit

Viewed 15

I am not getting weekly data from google fit (Yes, There is data in google fit which I have track using watch), but Yes I am getting today's date data. I am attaching code snippet. Start date = "2022-09-13T00:00:00Z" End date = "2022-09-20T23:59:59Z"

private fun readSleepSessions(startTime : Long , endTime : Long) {
    val client = Fitness.getSessionsClient(requireContext(), getGoogleAccount())
    val sessionReadRequest = SessionReadRequest.Builder()
        .read(DataType.TYPE_SLEEP_SEGMENT)
        .includeSleepSessions()
        .readSessionsFromAllApps()
        .enableServerQueries()
        .setTimeInterval(1663027200000, 1663718399000, TimeUnit.MILLISECONDS)
        .build()

    client.readSession(sessionReadRequest)
        .addOnSuccessListener {
            Log.d(TAG, "readSleepSessions: $sessionReadRequest")
            dumpSleepSessions(it)
        }
        .addOnFailureListener {
            Log.e("MainScreen", "Unable to read sleep sessions", it)
        }
}
 private fun dumpSleepSessions(response: SessionReadResponse) {
    if (response.sessions.isNotEmpty()){
        for (session in response.sessions) {
            dumpSleepSession(session, response.getDataSet(session))
            Log.d(TAG, "dumpSleepSessions: ${response.sessions}")
        }
    }else{
        Log.d(TAG, "dumpSleepSessionsResponse: ${response.status}")
    }

}

 private fun dumpSleepSession(session: Session, dataSets: List<DataSet>) {
    dumpSleepSessionMetadata(session)
    dumpSleepDataSets(dataSets)
}
 private fun dumpSleepDataSets(dataSets: List<DataSet>) {
    for (dataSet in dataSets) {
        for (dataPoint in dataSet.dataPoints) {
            val sleepStageOrdinal = dataPoint.getValue(Field.FIELD_SLEEP_SEGMENT_TYPE).asInt()
            val sleepStage = sleepTargetName[sleepStageOrdinal]
            val durationMillis =
                dataPoint.getEndTime(TimeUnit.MILLISECONDS) - dataPoint.getStartTime(TimeUnit.MILLISECONDS)
            val duration = TimeUnit.MILLISECONDS.toMinutes(durationMillis)
            Log.d(TAG, "\t$sleepStage: $duration (minutes)")
    }

}
0 Answers
Related