我正在寻找一种使用HealthKit检测锻炼检测/停止的方法,似乎没有办法检测它。
在Android中,您可以获得" ACTION_SESSION_START"和" ACTION_SESSION_END"对于会议。
是否有人尝试过检测锻炼开始/停止?
感谢您的时间!
答案 0 :(得分:0)
我原以为你可以检测事件。不保存锻炼。
在HealthKit中,您可以创建锻炼事件。因此,理论上您可以编写一些代码来检测pause
/ resume
事件。
创建一个持续___时间的跑步锻炼。
let finish = NSDate() // Now
let start = finish.dateByAddingTimeInterval(0000) // workout time
let workout = HKWorkout(activityType: .Running, startDate: start, endDate: finish)
创建Pause
(停止)和Resume
(开始)事件。
let workoutEvents: [HKWorkoutEvent] = [
HKWorkoutEvent(type: .Pause, date: startDate.dateByAddingTimeInterval(000)),
HKWorkoutEvent(type: .Resume, date: startDate.dateByAddingTimeInterval(000))
]
然后,您需要更改HKWorkout
对象的创建以使用更复杂的构造函数,这允许您包含workoutEvents
。
let workout = HKWorkout(
activityType: .Running
startDate: start,
endDate: end,
workoutEvents: workoutEvents,
device: nil,
metadata: nil
)
此时你通常会将锻炼传递给HKHealthStore.saveObject
以保存它。
healthStore.saveObject(workout) { (success: Bool, error: NSError?) -> Void in
if success {
// Workout was saved
}
else {
// Workout was not saved
}
}
在您的情况下,您不想保存。您想检测事件。可能有一个可以检测到Pause
或Resume
。
我不确定您想要的具体dateByAddingTimeInterval
值,但您肯定可以尝试使用零值吗?因为技术上00
仍然是一个事件。
锻炼事件在活动状态和非活动状态之间切换锻炼对象。您可以创建方法detectWorkoutEvent
。
答案 1 :(得分:0)
没有用于观察其他应用记录的锻炼的API。