程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Google Fit API SleepSession 返回空的睡眠会话数组 Kotlin大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Google Fit API SleepSession 返回空的睡眠会话数组 Kotlin?

开发过程中遇到Google Fit API SleepSession 返回空的睡眠会话数组 Kotlin的问题如何解决?下面主要结合日常开发的经验,给出你关于Google Fit API SleepSession 返回空的睡眠会话数组 Kotlin的解决方法建议,希望对你解决Google Fit API SleepSession 返回空的睡眠会话数组 Kotlin有所启发或帮助;

我正在尝试从 Google 健身读取睡眠数据。 sessionClIEnt 成功从 Fit 读取,但是,它不会在 response.sessions 中返回任何会话,即使 Fit 中记录了睡眠会话。由于 API 更新相对较新我无法在线找到任何资源来解决此问题,因此我们不胜感激。

响应返回:

SessionReadResult{status=Status{statusCode=succesS,resolution=null},session=[],sessionDataSets=[]}

我遵循了来自 https://developers.google.com/fit/scenarios/read-sleep-data#android

的更新文档

这是在 Fit 中记录的睡眠数据:

Google Fit API SleepSession 返回空的睡眠会话数组 Kotlin

以及使用的代码:

        //Sets the start time to the month prevIoUs so data is got from then
        val endTime = LocaldatetiR_423_11845@e.Now().atZone(ZonEID.systemDefault())
        val startTime = endTime.minusMonths(1)

        //Sleep session request
        val request = SessionReadrequest.builder()
            .readSessionsFromAllApps()
            .includeSleepSessions()
            .read(DataType.TYPE_SLEEP_SEGMENT)
            .enableServerQuerIEs()
            .setTimeInterval(startTime.toEpochSecond(),endTime.toEpochSecond(),TimeUnit.MILliSECONDS)
            .build()

        //Set fitnessOptions
        val fitnessOptions = fitnessOptions.builder()
            .accessSleepSessions(fitnessOptions.ACCESS_READ)
            .addDataType(DataType.TYPE_SLEEP_SEGMENT,fitnessOptions.ACCESS_READ)
            .build()

        //Get permissions from user
        if (!GoogleSignIn.hasPermissions(GoogleSignIn.getLastSignedInAccount(this),fitnessOptions)) {
            GoogleSignIn.requestPermissions(
                this,RC_requEST_SLEEP_AND_CONTinUE_SUBSCRIPTION,GoogleSignIn.getLastSignedInAccount(this),fitnessOptions);
        }

        //Make read request and process response
        getSessionsClIEnt(this,GoogleSignIn.getAccountForExtension(this,fitnessOptions))
            .readSession(request)
            .addOnsuccessListener { response ->
                Log.i(tag,"Read success")

                for (session in response.sessions) {
                    val sessionStart = session.getStartTime(TimeUnit.MILliSECONDS)
                    val sessionEnd = session.getEndTime(TimeUnit.MILliSECONDS)
                    Log.i(tag,"Sleep between $sessionStart and $sessionEnd")

                    // If the sleep session has finer granularity sub-components,extract them:
                    val dataSets = response.getDataSet(session)
                    for (dataSet in dataSets) {
                        for (point in dataSet.dataPoints) {
                            val sleepStageVal = point.getValue(FIEld.FIELD_SLEEP_segment_type).asInt()
                            val sleepStage = SLEEP_STAGE_nameS[sleepStageVal]
                            val segmentStart = point.getStartTime(TimeUnit.MILliSECONDS)
                            val segmentEnd = point.getEndTime(TimeUnit.MILliSECONDS)
                            Log.i(tag,"\t* Type $sleepStage between $segmentStart and $segmentEnd")
                        }
                    }
                }
                setbarChartValues(pTimE)
            }
            .addOnFailureListener { e ->
                Log.i(tag,"Failure Response: ",E)
            }
    }

解决方法

我使用 Google 提供的示例项目解决了这个问题:https://github.com/android/fit-samples/blob/main/SleepKotlin/app/src/main/java/com/google/android/gms/fit/samples/basicsleepkotlin/MainActivity.kt

它的代码/步骤比文档中描述的多得多,尤其是关于新的睡眠权限。

,

您以秒为单位传递日期时间,但您已指定以毫秒为单位。

替换

INFO - No configuration

.setTimeInterval(startTime.toEpochSecond(),endTime.toEpochSecond(),TimeUnit.MILLISECONDS)

大佬总结

以上是大佬教程为你收集整理的Google Fit API SleepSession 返回空的睡眠会话数组 Kotlin全部内容,希望文章能够帮你解决Google Fit API SleepSession 返回空的睡眠会话数组 Kotlin所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:Google