0

我正在使用 Google SignIn 和 Google Fit API 开发独立的 WearOS 健身应用程序。

我将从 Smartwatch 记录睡眠(使用 RecordinApi),然后从 HistoryAPI 中读取它。

我有智能手表华为手表 2。它会在 Google FIT 帐户中自动记录心率,但没有睡眠数据。

// Subscriber for Sleep Data
private fun recordSleepData() {

    Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))
        .subscribe(DataType.TYPE_SLEEP_SEGMENT)
        .addOnSuccessListener {
            Log.i(TAG, "Successfully subscribed! FOR SLEEP")
        }
        .addOnFailureListener { e ->
            Log.w(TAG, "There was a problem subscribing.", e)
        }
}

订阅后,我打电话取消订阅

private fun stopSubscriptionSleep() {
    Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))
        .unsubscribe(DataType.TYPE_SLEEP_SEGMENT)
        .addOnSuccessListener {
            Log.i(TAG,"Successfully unsubscribed.")
        }
        .addOnFailureListener { e->
            Log.w(TAG, "Failed to unsubscribe.")
            // Retry the unsubscribe request.
        }
}

取消订阅后,我调用函数 Read from History API

private fun readSleepData() {
    //Sleep session request
    val endTimeHeart = LocalDateTime.now().atZone(ZoneId.systemDefault())
    val startTimeHeart = endTimeHeart.minusDays(10)
    val readRequest = DataReadRequest.Builder()
        .read(DataType.TYPE_SLEEP_SEGMENT)
        .enableServerQueries()
        .setTimeRange(startTimeHeart.toEpochSecond(), endTimeHeart.toEpochSecond(), TimeUnit.SECONDS)
        .bucketByTime(1, TimeUnit.DAYS)
        .build()

    Log.i(TAG, "$readRequest")

    Fitness.getHistoryClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))
        .readData(readRequest)
        .addOnSuccessListener { dataReadResponse ->
            Log.d(TAG, "onSuccess()")
            for (bucket in dataReadResponse.buckets) {
                Log.e("History", "Data returned for Data type: " + bucket.dataSets)
                val dataSets = bucket.dataSets
                for (dataSet in dataSets) {
                    displaySleepData(dataSet)
                }
            }
        }
        .addOnFailureListener { e -> Log.e(TAG, "onFailure()", e) }
        .addOnCompleteListener { Log.d(TAG, "onComplete()") }
}

读取功能后,我得到空数据集。

4

0 回答 0