[英]Get heartRateVariabilitySDNN during LiveWorkoutSession at WatchOS
我制作了一个简单的 watchOS 应用程序来运行正在运行的会话并监控心率变异性 (sdnn)。 在模拟器上运行我成功地获得了其他 ps,如距离、心率或卡路里,但不是 sdnn。
这是我设置 WorkoutManager 的方法:
func workoutBuilderDidCollectEvent(_ workoutBuilder: HKLiveWorkoutBuilder) {
//
}
func workoutBuilder(_ workoutBuilder: HKLiveWorkoutBuilder, didCollectDataOf collectedTypes: Set<HKSampleType>) {
for type in collectedTypes{
print(type)
guard let quantityType = type as? HKQuantityType else {return}
let statistics = workoutBuilder.statistics(for: quantityType)
updateForStatistics(statistics)
}
}
}
而这块是实时获取数据的:
func updateForStatistics(_ statistics: HKStatistics?) {
guard let statistics = statistics else { return }
DispatchQueue.main.async {
switch statistics.quantityType {
case HKQuantityType.quantityType(forIdentifier: .heartRate):
let heartRateUnit = HKUnit.count().unitDivided(by: HKUnit.minute())
self.heartRate = statistics.mostRecentQuantity()?.doubleValue(for: heartRateUnit) ?? 0
self.averageHeartRate = statistics.averageQuantity()?.doubleValue(for: heartRateUnit) ?? 0
case HKQuantityType.quantityType(forIdentifier: .activeEnergyBurned):
let energyUnit = HKUnit.kilocalorie()
self.activeEnergy = statistics.sumQuantity()?.doubleValue(for: energyUnit) ?? 0
case HKQuantityType.quantityType(forIdentifier: .distanceWalkingRunning), HKQuantityType.quantityType(forIdentifier: .distanceCycling):
let meterUnit = HKUnit.meter()
self.distance = statistics.sumQuantity()?.doubleValue(for: meterUnit) ?? 0
case HKQuantityType.quantityType(forIdentifier: .heartRateVariabilitySDNN):
let sdnnUnit = HKUnit.count()
self.sdnn = statistics.mostRecentQuantity()?.doubleValue(for: sdnnUnit) ?? 0
default:
return
}
}
}
如前所述,除 sdnn 外,所有其他 ps 都由 WatchOS 模拟 - 在这里我总是得不到任何数据。
此外,我知道如何通过 HKQuantitySample 编写自己的 sdnn 值,但需要操作系统在会话期间跟踪的特定值。 或者一些解决方法来强制操作系统为我保存它。
有什么想法吗?
ssdUnit 应该是HKUnit(from: "ms")
不幸的是,您无法访问 heartRateVariabilitySDNN 参数,因为它不会在锻炼期间测量。 但是,您可以使用 Mindfulness 应用程序中的呼吸练习手动触发 HRV 测量
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.