【发布时间】:2017-06-15 00:13:16
【问题描述】:
我可以使用以下代码从 HealthKit 读取一段时间(锻炼持续时间)的平均心率数据。
但是,当我查看 Apple Health 应用程序时,它显示 Apple Watch 的心率样本采集频率非常低(每 15-30 分钟一次)。这使得我在此期间的平均 HR 读数非常不准确。
如何触发 HealthKit 从手表中采样(收集)心率数据并将其写入 HealthKit?
let endDate = (calendar as NSCalendar).date(byAdding: NSCalendar.Unit.minute, value: duration, to: startDate, options: NSCalendar.Options())
let predicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate, options: HKQueryOptions())
let squery = HKStatisticsQuery(quantityType: heartRateType, quantitySamplePredicate: predicate, options: HKStatisticsOptions.discreteAverage, completionHandler: { (qurt, result, errval) -> Void in
guard errval == nil else { print("error"); completion(0.0, errval); return }
var averageHeartRate : Double = 0.0
if (result != nil && result!.averageQuantity() != nil) {
let quantity : HKQuantity = result!.averageQuantity()!
averageHeartRate = quantity.doubleValue(for: HKUnit.count().unitDivided(by: HKUnit.minute()))
}
})
【问题讨论】:
-
您在进行测量之前是否已启动
HKWorkoutSession? -
@DávidPásztor 我没有,一开始就很好,谢谢!
-
@DávidPásztor 我开始了锻炼,但是当我调用结束会话时它似乎并没有停止。小时监视器继续保持打开状态,手表应用程序保持在前台。有什么办法可以阻止这种情况吗?
标签: swift apple-watch healthkit