0
我正在创建一个读取HeartRate数据的iWatch应用程序,然后我使用它绘制一些图表。该应用程序中有2个按钮,一个用于暂停锻炼时段,另一个用于恢复锻炼时段。在暂停按钮的点击,我打电话healthStore的pauseWorkoutSession
方法:为什么PauseWorkoutSession健康存储不会暂停会话?
healthStore.pauseWorkoutSession(workoutSession!)
的OnClick,我打电话healthStore的resumeWorkoutSession
方法:
healthStore.resumeWorkoutSession(workoutSession!)
要获得心率数据,我跑了以下代码:
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' 它假设暂停锻炼会话,以便新的心率读数到来?
您是否知道PauseWorkoutSession方法的确切功能?为什么我会称这种方法? @Allan –
暂停锻炼会产生暂停HKWorkoutEvent。在创建HKWorkout以确定锻炼的总暂停时间时,将使用传递到您的HKWorkoutSessionDelegate的事件。 – Allan
当锻炼活动类型正在运行时,Watch可以在您未运行时自动检测并暂停锻炼,生成可用于确定总未停顿时间的HKWorkoutEvent。但是,如果我手动暂停并恢复锻炼,我可以非常容易地计算未使用HKWorkoutEvent时的总暂停时间,因为我知道按下暂停和恢复按钮的时间。那么有没有使用调用PauseWorkoutSession呢 –