首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在heartRateVariabilitySDNN LiveWorkoutSession at WatchOS获得Get

在heartRateVariabilitySDNN LiveWorkoutSession at WatchOS获得Get
EN

Stack Overflow用户
提问于 2022-01-14 12:07:27
回答 1查看 96关注 0票数 0

我制作了一个简单的watchOS应用程序来运行一个运行的会话并监控心率变异性(Sdnn)。在模拟器上运行,我成功地获得了其他的p-s,如距离,心率或卡路里,但没有。

下面是设置WorkoutManager的方法:

代码语言:javascript
运行
复制
    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)
        }
    }
} 

这篇文章是实时获取数据:

代码语言:javascript
运行
复制
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外,所有其他p-s都在通过WatchOS进行仿真--在这里,我始终没有得到任何数据。

此外,我知道如何通过HKQuantitySample编写自己的sdnn值,但需要在会话期间由OS跟踪的特定值。或者一些解决办法来迫使操作系统为我保存这个。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-30 02:19:15

ssdUnit应该是HKUnit(from: "ms")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70710332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档