我正在创建一个iWatch应用程序,它读取HeartRate数据,然后我用它来绘制一些图形。应用程序中有2个按钮,一个用于暂停锻炼,另一个用于恢复锻炼。单击“暂停”按钮,我调用了healthStore的pauseWorkoutSession
方法:
healthStore.pauseWorkoutSession(workoutSession!)
OnClick of Resume Button,我正在调用healthStore的resumeWorkoutSession
方法:
healthStore.resumeWorkoutSession(workoutSession!)
要获取HeartRate数据,我运行以下代码:
let quantityType = HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)!
let datePredicate = HKQuery.predicateForSamplesWithStartDate(instanceDel.workoutSessionStartDate, endDate: nil, options: .StrictStartDate)
let updateHandler: (HKAnchoredObjectQuery,[HKSample]?,[HKDeletedObject]?,HKQueryAnchor?,
NSError?)-> Void = {query, samples, deleteObjects, newAnchor, error in
if !self.instanceDel.workoutPaused {
//do something
}
}
heartRateQuery = HKAnchoredObjectQuery(type: quantityType, predicate: datePredicate, anchor: nil, limit: Int(HKObjectQueryNoLimit) , resultsHandler: updateHandler)
heartRateQuery!.updateHandler = updateHandler
instanceDel.healthStore.executeQuery(heartRateQuery!)
我面临的问题是,即使锻炼暂停,也会不断调用更新处理程序,并且新的心率值会不断添加到样本数组中。 pauseWorkoutSession
究竟做了什么? ISN'
它是否会暂停训练课程以便新的心率读数出现?
答案 0 :(得分:1)
暂停锻炼不是为了防止watchOS收集心率样本或任何其他类型的样本。以这种方式思考 - 即使手表没有记录锻炼,它仍然可以收集心率,步数,距离,卡路里等。
如果您想忽略会话暂停时录制的样本,则应停止查询或忽略样本。