forked from upstream-mirrors/OpenTracks
Add an optional filter for invalid (0 bpm) heart rate readings
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package de.dennisguse.opentracks.data.models;
|
package de.dennisguse.opentracks.data.models;
|
||||||
|
|
||||||
public record HeartRate(float value) {
|
public record HeartRate(float value) {
|
||||||
|
public static HeartRate INVALID = HeartRate.of(0.0f);
|
||||||
|
|
||||||
public static HeartRate of(float value) {
|
public static HeartRate of(float value) {
|
||||||
return new HeartRate(value);
|
return new HeartRate(value);
|
||||||
@@ -9,4 +10,8 @@ public record HeartRate(float value) {
|
|||||||
public float getBPM() {
|
public float getBPM() {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isValid() {
|
||||||
|
return !this.equals(INVALID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ public class AggregatorHeartRate extends Aggregator<HeartRate, HeartRate> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void computeValue(Raw<HeartRate> current) {
|
protected void computeValue(Raw<HeartRate> current) {
|
||||||
this.aggregatedValue = current.value();
|
if (current.value().isValid()) {
|
||||||
|
this.aggregatedValue = current.value();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -64,7 +64,8 @@ public class SensorDataSet {
|
|||||||
|
|
||||||
public Pair<HeartRate, String> getHeartRate() {
|
public Pair<HeartRate, String> getHeartRate() {
|
||||||
if (heartRate != null) {
|
if (heartRate != null) {
|
||||||
return heartRate.getAggregatedValueWithSensorName(trackPointCreator.createNow());
|
Pair<HeartRate, String> value = heartRate.getAggregatedValueWithSensorName(trackPointCreator.createNow());
|
||||||
|
if (value.first.isValid()) return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
+1
-1
@@ -161,7 +161,7 @@ class VoiceAnnouncementUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Pair<HeartRate, String> heartrate = sensorDataSet.getHeartRate();
|
Pair<HeartRate, String> heartrate = sensorDataSet.getHeartRate();
|
||||||
if (shouldVoiceAnnounceHeartRateCurrent() && heartrate != null && heartrate.first != null) { //TODO Check has an announcable value?
|
if (shouldVoiceAnnounceHeartRateCurrent() && heartrate != null && heartrate.first != null && heartrate.first.isValid()) { //TODO Check has an announcable value?
|
||||||
int averageHeartRate = Math.round(heartrate.first.getBPM());
|
int averageHeartRate = Math.round(heartrate.first.getBPM());
|
||||||
|
|
||||||
builder.append(" ")
|
builder.append(" ")
|
||||||
|
|||||||
Reference in New Issue
Block a user