2016-03-25 34 views
-2

Kalp atış hızı almak için bu kodu yazdım NSArray kullanıyorum ve ortalama kalp atış hızı alıyorum. Artık soru şu: Apple Watch Sağlık Kitindeki verileri güncelliyor ve güncellenen ortalama kalp atışlarının her 1 dakikada bir yenilenmesini istiyorum. Bu noktada takılıyorum, lütfen yardım edin?Sağlık Sisteminden güncellenmiş kalp atış hızı verileri alın

-(double)get_heartRates 
{ 

//code to get the updated heart beats 
NSDate *startDate1 = [NSDate distantPast]; 
NSPredicate *Predicate = [HKQuery predicateForSamplesWithStartDate:startDate1 endDate:[NSDate date] options:HKQueryOptionStrictEndDate]; 
HKSampleType *object = [HKSampleType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate]; 

sum_Of_HeartRates=0.0; 

HKAnchoredObjectQuery *heartQuery = [[HKAnchoredObjectQuery alloc] initWithType:object predicate:Predicate anchor:self.lastAnchor limit:0 resultsHandler:^(HKAnchoredObjectQuery *query, NSArray<HKSample *> *sampleObjects, NSArray<HKDeletedObject *> *deletedObjects, HKQueryAnchor *newAnchor, NSError *error) { 

    NSLog(@"Sample counts:%ld",sampleObjects.count); 
    for(int i=0;i<(int)sampleObjects.count;i++) 
    { 

     HKQuantitySample *sample = (HKQuantitySample *)[sampleObjects objectAtIndex:i]; 
     HKQuantity *quantity = sample.quantity; 
     double bpm_Values= [quantity doubleValueForUnit:[HKUnit unitFromString:@"count/min"]]; 
     sum_Of_HeartRates=sum_Of_HeartRates+bpm_Values; 

    } 
    avg_heartBeats=sum_Of_HeartRates/(int)sampleObjects.count; 
}]; 

[heartQuery setUpdateHandler:^(HKAnchoredObjectQuery *query, NSArray<HKSample *> *SampleArray, NSArray<HKDeletedObject *> *deletedObjects, HKQueryAnchor *Anchor, NSError *error) { 

    HKQuantitySample *sample = (HKQuantitySample *)[SampleArray objectAtIndex:0]; 
    HKQuantity *quantity = sample.quantity; 
    new_Updated_Data =[quantity doubleValueForUnit:[HKUnit unitFromString:@"count/min"]]; 
    NSLog(@"new quantity:%f",new_Updated_Data); 
}]; 

[self.healthStore executeQuery:heartQuery]; 
NSLog(@"updated data %f",new_Updated_Data); 


return avg_heartBeats; 


//todo:- to get background update fast and easy 

}

+0

Herkes bana verilen ediyorum neden -2 bu soru bana söyleyebilir: Eğer HKWorkoutSession dalmak istiyorsanız

Allan ayrıntılı bir öğretici var? –

+0

Bu contayı bir iPhone'da veya saatte mi çalıştırıyorsunuz? –

+0

iphone, Sağlık Seti'nden veri getirme –

cevap

0

Kullanım HKObserverQuery arka planda güncellenir uzun çalışan sorguyu almak için:

https://developer.apple.com/library/ios/documentation/HealthKit/Reference/HKObserverQuery_Class/index.html

sürece hiçbir HKWorkoutSession olarak çalışıyorsa, saatiniz ölçer nabız her 10 dakika, bu yüzden daha fazla değer elde edemezsin. Saatinizde bir HKWorkoutSession çalışıyorsa, daha sık değerler alırsınız. https://developer.apple.com/videos/play/wwdc2015/203/

+0

HKAnchoredQuery'deki sorun nedir? Güncelleme İşleyicisini kullandım mı? Aynısını WorkoutSession olmadan kullanabilir miyim? –

+0

'HKAnchoredQuery' ile sorun yok. HKWorkoutSession' kullanmadan kullanabilirsiniz ('HKWorkoutSession' yalnızca saatte kullanılabilir). –

+0

Hey Gerd Teşekkürler, şimdi bu sorunla karşı karşıyayım. Güncellenmiş veri alıyorum ama çoklu görevlere ihtiyacım var ve ben çok görevli ve Health Kit'e dokunmadan düzgün canlı veri almak istiyorum.http: //stackoverflow.com/questions/36277821/hkanchoredquery-update-handler-not-working-properly/ 36279850? Noredirect = 1 # comment60186455_36279850 lütfen bunun için yardıma mı ihtiyacınız var? –