我正在寻找一种使用HealthKit检测健身活动的方式,但似乎没有办法检测。在Android中,您可以使用“ACTION_SESSION_START”和“ACTION_SESSION_END”来获取会话信息。有人尝试过检测健身活动的开始/结束吗?感谢您的时间!
目前没有API可以观察其他应用程序记录的锻炼。
我在想你可以检测事件。而不是保存一次锻炼。
在 HealthKit 中,你可以创建锻炼事件。因此,你可以理论上编写代码来检测暂停
/恢复
事件。
创建一个持续___时间的跑步锻炼。
let finish = NSDate() // Now
let start = finish.dateByAddingTimeInterval(0000) // workout time
let workout = HKWorkout(activityType: .Running, startDate: start, endDate: finish)
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
}
}
在你的情况下,你不想保存。你想要检测事件。可以使用一个switch语句来检测暂停
或恢复
。
我不确定你想要的具体dateByAddingTimeInterval
值,但你肯定可以尝试使用零值进行实验吧?因为从技术上讲,00
仍然是一个事件。
锻炼事件在活动和非活动状态之间切换锻炼对象。你可以创建一个方法detectWorkoutEvent
。
HKWorkout
文档中没有看到这个功能被公开:https://developer.apple.com/reference/healthkit/hkworkout - JAL