【问题标题】:How do you detect Workout start / stop with HealthKit?您如何使用 HealthKit 检测锻炼开始/停止?
【发布时间】:2016-06-25 00:44:26
【问题描述】:

我正在寻找一种方法来检测锻炼检测/停止使用 HealthKit,但似乎无法检测到它。

在 Android 中,您会获得会话的“ACTION_SESSION_START”和“ACTION_SESSION_END”。

有没有人尝试检测锻炼开始/停止?

感谢您的宝贵时间!

【问题讨论】:

  • 您是否尝试检测 watchOS 上的另一个应用程序何时?没有用于此的 API。你想用这些信息做什么?
  • @Allan 我正在为 HealthKit 创建一个测试应用程序,想知道是否有任何方法可以“监听”或“查询”锻炼状态的状态变化,无论是来自另一个应用程序还是来自苹果手表。基本上是用测试应用程序记录“任何锻炼开始”或“任何锻炼停止”。谢谢你的回答!
  • 我没有在HKWorkout 文档中看到此功能:developer.apple.com/reference/healthkit/hkworkout
  • This 是一个很棒的教程,应该可以回答你的问题。
  • @Dershowitz123 该教程展示了如何保存锻炼,而不是检测它们。

标签: ios healthkit


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我以为你可以检测事件。不保存锻炼。

    在 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
    }
    }
    

    但是

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多