Appearance
Pulse Rate
The Pulse Rate value is sent both as an instantaneous value during the measurement and as part of the final results.
The application can receive the Pulse Rate result by implementing VitalSignsListener
:
Swift
func onVitalSign(vitalSign: VitalSign) {
DispatchQueue.main.async {
if (vitalSign.type == VitalSignTypes.pulseRate) {
if let pulseRate = vitalSign as? VitalSignPulseRate {
print("Pulse Rate: \(pulseRate.value)")
}
}
}
}
func onFinalResults(results: VitalSignsResults) {
DispatchQueue.main.async {
if let pulseRate = results.getResult(of: VitalSignTypes.pulseRate) as? VitalSignPulseRate {
print("Pulse Rate: \(pulseRate.value)")
print("Confidence Level: \(pulseRate.confidence?.level ?? ConfidenceLevel.unknown)")
}
}
}
func onVitalSign(vitalSign: VitalSign) {
DispatchQueue.main.async {
if (vitalSign.type == VitalSignTypes.pulseRate) {
if let pulseRate = vitalSign as? VitalSignPulseRate {
print("Pulse Rate: \(pulseRate.value)")
}
}
}
}
func onFinalResults(results: VitalSignsResults) {
DispatchQueue.main.async {
if let pulseRate = results.getResult(of: VitalSignTypes.pulseRate) as? VitalSignPulseRate {
print("Pulse Rate: \(pulseRate.value)")
print("Confidence Level: \(pulseRate.confidence?.level ?? ConfidenceLevel.unknown)")
}
}
}
Objective-C
- (void)onVitalSignWithVitalSign:(id<BNHVitalSign> _Nullable)vitalSign {
dispatch_async(dispatch_get_main_queue(), ^{
if (vitalSign.type == BNHVitalSignTypes.pulseRate) {
BNHVitalSignPulseRate *pulseRate = (BNHVitalSignPulseRate *)vitalSign;
if (pulseRate != nil) {
NSLog(@"Pulse Rate: %ld", (long)pulseRate.value);
}
}
});
}
- (void)onFinalResultsWithResults:(BNHVitalSignsResults *)results {
dispatch_async(dispatch_get_main_queue(), ^{
BNHVitalSignPulseRate *pulseRate = (BNHVitalSignPulseRate *)[results getResultOf:BNHVitalSignTypes.pulseRate];
if (pulseRate != nil) {
NSLog(@"Pulse Rate: %ld", (long)pulseRate.value);
BNHVitalSignConfidence *confidence = pulseRate.confidence;
if (confidence != nil) {
NSLog(@"Confidence Level: %ld", (long)confidence.level);
}
else {
NSLog(@"Confidence Level: %d", 0);
}
}
});
}
- (void)onVitalSignWithVitalSign:(id<BNHVitalSign> _Nullable)vitalSign {
dispatch_async(dispatch_get_main_queue(), ^{
if (vitalSign.type == BNHVitalSignTypes.pulseRate) {
BNHVitalSignPulseRate *pulseRate = (BNHVitalSignPulseRate *)vitalSign;
if (pulseRate != nil) {
NSLog(@"Pulse Rate: %ld", (long)pulseRate.value);
}
}
});
}
- (void)onFinalResultsWithResults:(BNHVitalSignsResults *)results {
dispatch_async(dispatch_get_main_queue(), ^{
BNHVitalSignPulseRate *pulseRate = (BNHVitalSignPulseRate *)[results getResultOf:BNHVitalSignTypes.pulseRate];
if (pulseRate != nil) {
NSLog(@"Pulse Rate: %ld", (long)pulseRate.value);
BNHVitalSignConfidence *confidence = pulseRate.confidence;
if (confidence != nil) {
NSLog(@"Confidence Level: %ld", (long)confidence.level);
}
else {
NSLog(@"Confidence Level: %d", 0);
}
}
});
}
For general information about vital signs see the Vital Signs and Health Indicators Information Page.
For a list of supported vital signs per platform and measurement mode (face/finger) see the Supported Vital Signs Page.
Important
Note that vital signs are sent on a background thread. The application must switch to the UI thread in order to perform UI updates.