swift - 实时心率记录时间间隔 - WatchOS
问题描述
我创建了一个带有实时心率记录的手表应用程序,为此我使用了锻炼会话和 HKAnchoredObjectQuery 来获取结果。在这个苹果中提到,每 5 秒会更新一次心率值,但在我的情况下,它最多需要 5-10 秒才能更新。我正在使用 watch Serious 3,我需要每 5 秒收集一次值。
func startWorkout() {
if (session != nil) {
return
}
let workoutConfiguration = HKWorkoutConfiguration()
workoutConfiguration.activityType = .walking
workoutConfiguration.locationType = .outdoor
do {
session = try HKWorkoutSession(healthStore: healthStore, configuration: workoutConfiguration)
session?.delegate = self
} catch {
print("Unable to create the workout session!")
}
session?.startActivity(with: Date())
}
func startHeartRateStreamingQuery(_ workoutStartDate: Date){
guard let quantityType = HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier.heartRate) else { return nil }
let datePredicate = HKQuery.predicateForSamples(withStart: workoutStartDate, end: nil, options: .strictEndDate )
let predicate = NSCompoundPredicate(andPredicateWithSubpredicates:[datePredicate])
let heartRateQuery = HKAnchoredObjectQuery(type: quantityType, predicate: predicate, anchor: nil, limit: Int(HKObjectQueryNoLimit)) { (query, sampleObjects, deletedObjects, newAnchor, error) -> Void in
self.updateHeartRate(sampleObjects)
}
heartRateQuery.updateHandler = {(query, samples, deleteObjects, newAnchor, error) -> Void in
self.updateHeartRate(samples)
}
healthStore.execute(heartRateQuery)
}
func updateHeartRate(_ samples: [HKSample]?) {
guard let heartRateSamples = samples as? [HKQuantitySample] else {return}
for sample in heartRateSamples {
let timeStamp = sample.startDate
let value = sample.quantity
print("\(timeStamp)_\(value)")
}
}
解决方案
推荐阅读
- wordpress - 从具有相同图像的两个帖子中获取媒体
- html - 即使使用相同的 css,保证金也会更大
- azure-data-factory-2 - 我们可以在自定义任务中设置 ADF 参数值或链接的服务连接字符串吗
- python - 用folium显示TomTom地图
- algorithm - 如何降低移动点凸包的复杂度?
- c# - 如何在mvc中设置gridview
- javascript - 使用节点在服务器上进行图像优化
- java - 无法获取令牌(OAUTH2、Spring、Kotlin)
- c# - AI 第三人称控制器敌人腿不动,但角色和航路点与敌人一起移动。Unity3d
- r - R闪亮for循环中的进度条