Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do any additional setup after loading the view, typically from a nib.
- let walkingHR = HealthKitManager.retriveHeathKitData(dataType: "walkingHeartRate")
- print(String(format: "%.0f", walkingHR))
- setUpLabels(type: "walkingHeartRate", samples: walkingHR)
- }
- var comp: DateComponents = Calendar.current.dateComponents([.year, .month, .day], from: Date())
- comp.timeZone = TimeZone(abbreviation: "UTC")!
- let truncated = Calendar.current.date(from: comp)!
- var beats: Double? = 0.0001
- var typeHeart = HKQuantityType.quantityType(forIdentifier: .restingHeartRate)
- switch dataType{
- case "walkingHeartRate":
- typeHeart = HKQuantityType.quantityType(forIdentifier: .walkingHeartRateAverage)
- break
- case "restingHeartRate":
- typeHeart = HKQuantityType.quantityType(forIdentifier: .restingHeartRate)
- break
- case "heartRateVariability":
- typeHeart = HKQuantityType.quantityType(forIdentifier: .heartRateVariabilitySDNN)
- break
- default:
- print("Get Heart Rate Data Type not defined", "dataType switch 1 from retriveHeathKitData")
- }
- let startDate = truncated
- let endDate = Date()
- let predicate: NSPredicate? = HKQuery.predicateForSamples(withStart: startDate, end: endDate, options: HKQueryOptions.strictEndDate)
- let squery = HKStatisticsQuery(quantityType: typeHeart!, quantitySamplePredicate: predicate, options: .discreteAverage, completionHandler: {(query: HKStatisticsQuery,result: HKStatistics?, error: Error?) -> Void in
- DispatchQueue.main.async(execute: {() -> Void in
- var type: String = ""
- switch dataType{
- case "walkingHeartRate":
- let quantity: HKQuantity? = result?.averageQuantity()
- beats = quantity?.doubleValue(for: HKUnit.count().unitDivided(by: HKUnit.minute()))
- type = "walkingHR"
- break
- case "restingHeartRate":
- let quantity: HKQuantity? = result?.averageQuantity()
- beats = quantity?.doubleValue(for: HKUnit.count().unitDivided(by: HKUnit.minute()))
- type = "restingHR"
- break
- case "heartRateVariability":
- let quantity: HKQuantity? = result?.averageQuantity()
- beats = quantity?.doubleValue(for: HKUnit.secondUnit(with: .milli))
- type = "variabilityHR"
- break
- default:
- print("Get Heart Rate Data Type not defined", "dataType switch 2 from retriveHeathKitData")
- beats = 0.00
- }
- print("got: (String(format: "%.f", beats!))")
- //print(dataType)
- })
- })
- healthKitStore.execute(squery)
- return(beats!)
- }
Add Comment
Please, Sign In to add comment