Ich weiß, dass diese Frage gestellt wurde, aber nicht wirklich beantwortet wurde. Ich habe Dinge aus Themen wie folgt probiert: Heart Rate With Apple's HealthkitWie lese ich healthKit Herzfrequenzdaten?
Ich versuchte, dies von Objective-C zu Swift, aber nicht funktioniert.
Meine Frage ist, was ist der beste Weg, um Herzfrequenzdaten aus Health-Kit zu lesen. Ich möchte in der Lage sein, jede Herzfrequenzmessung von dem Zeitpunkt an zu lesen, an dem sie aufgenommen wurde, und ich möchte die Zeitstempel dieser Messungen sehen können.
ich um die Erlaubnis gebeten, hier:
import Foundation
import UIKit
import HealthKit
class HealthKitManager: NSObject {
static let healthKitStore = HKHealthStore()
static func authorizeHealthKit() {
let healthKitTypes: Set = [
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)!,
]
healthKitStore.requestAuthorizationToShareTypes(healthKitTypes,
readTypes: healthKitTypes) { _, _ in }
}
}
Hier ist der Code meiner Ansicht Controller für jetzt (ich bin nicht sicher, warum dies nicht funktioniert):
import UIKit
import HealthKit
class ViewController: UIViewController {
let health: HKHealthStore = HKHealthStore()
let heartRateUnit:HKUnit = HKUnit(fromString: "count/min")
let heartRateType:HKQuantityType = HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)!
var heartRateQuery:HKQuery?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func authorizeTapped(sender: AnyObject) {
print("button tapped")
self.createStreamingQuery()
HealthKitManager.authorizeHealthKit()
}
func createStreamingQuery() -> HKQuery
{
let queryPredicate = HKQuery.predicateForSamplesWithStartDate(NSDate(), endDate: nil, options: .None)
let query:HKAnchoredObjectQuery = HKAnchoredObjectQuery(type: self.heartRateType, predicate: queryPredicate, anchor: nil, limit: Int(HKObjectQueryNoLimit))
{ (query:HKAnchoredObjectQuery, samples:[HKSample]?, deletedObjects:[HKDeletedObject]?, anchor:HKQueryAnchor?, error:NSError?) -> Void in
if let errorFound:NSError = error
{
print("query error: \(errorFound.localizedDescription)")
}
else
{
//printing heart rate
if let samples = samples as? [HKQuantitySample]
{
if let quantity = samples.last?.quantity
{
print("\(quantity.doubleValueForUnit(self.heartRateUnit))")
}
}
}
}
query.updateHandler =
{ (query:HKAnchoredObjectQuery, samples:[HKSample]?, deletedObjects:[HKDeletedObject]?, anchor:HKQueryAnchor?, error:NSError?) -> Void in
if let errorFound:NSError = error
{
print("query-handler error : \(errorFound.localizedDescription)")
}
else
{
//printing heart rate
if let samples = samples as? [HKQuantitySample]
{
if let quantity = samples.last?.quantity
{
print("\(quantity.doubleValueForUnit(self.heartRateUnit))")
}
}
}//eo-non_error
}//eo-query-handler
return query
}
}
Ich kann nicht alles auf die Konsole zu drucken, das ist wirklich genau das, was ich will.
Auch - nichts von diesem Code geht in Richtung Hausaufgaben, persönliche/professionelle Projekte ... etc. Es ist nur zum Spaß/zu lernen, und der größte Teil dieses Codes ist, was ich versucht habe und was ich gefunden habe, durch mehrere Stapel über den Fluss und andere Foren zu suchen.
Haben Sie jemals Ihre 'createStreamingQuery' Funktion ausgeführt? – jtbandes
Ich tat, und nichts wurde auf der Konsole gedruckt, nicht sicher warum. – dnaland
Haben Sie executeQuery für den Integritätsspeicher verwendet? – jtbandes