如何使用HealthKit检测锻炼开始/停止?

时间:2016-06-25 00:44:27

标签: ios health-kit

我正在寻找一种使用HealthKit检测锻炼检测/停止的方法,似乎没有办法检测它。

在Android中,您可以获得" ACTION_SESSION_START"和" ACTION_SESSION_END"对于会议。

是否有人尝试过检测锻炼开始/停止?

感谢您的时间!

2 个答案:

答案 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
}
}

但是

在您的情况下,您不想保存。您想检测事件。可能有一个可以检测到PauseResume

的switch语句

我不确定您想要的具体dateByAddingTimeInterval值,但您肯定可以尝试使用零值吗?因为技术上00仍然是一个事件。

锻炼事件在活动状态和非活动状态之间切换锻炼对象。您可以创建方法detectWorkoutEvent

答案 1 :(得分:0)

没有用于观察其他应用记录的锻炼的API。