我正在使用 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()") }
}
读取功能后,我得到空数据集。