mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Huawei: fix AVG speed/pace calculation
This commit is contained in:
@@ -379,6 +379,10 @@ public enum ActivityKind {
|
||||
activityKind.name().contains("TREADMILL") || activityKind.name().contains("WALK");
|
||||
}
|
||||
|
||||
public static boolean isSwimActivity(final ActivityKind activityKind) {
|
||||
return activityKind.name().contains("SWIM");
|
||||
}
|
||||
|
||||
public static boolean isDiving(final ActivityKind activityKind) {
|
||||
return activityKind.name().contains("DIVING") || activityKind.name().contains("APNEA");
|
||||
}
|
||||
|
||||
+2
@@ -224,7 +224,9 @@ public class ActivitySummaryEntries {
|
||||
public static final String UNIT_MM = "unit_millimeter";
|
||||
public static final String UNIT_WATT = "unit_watt";
|
||||
public static final String UNIT_JOULE = "unit_joule";
|
||||
public static final String UNIT_MINUTES_PER_100_METERS = "minutes_100m";
|
||||
public static final String UNIT_SECONDS_PER_100_METERS = "seconds_100m";
|
||||
public static final String UNIT_MINUTES_PER_100_YARDS = "minutes_100yd";
|
||||
public static final String UNIT_SECONDS_PER_100_YARDS = "seconds_100yd";
|
||||
|
||||
public static final String GROUP_PACE = "Pace";
|
||||
|
||||
+20
-3
@@ -553,7 +553,7 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
|
||||
|
||||
Map<String, String> additionalValues = new HashMap<>();
|
||||
|
||||
for(HuaweiWorkoutSummaryAdditionalValuesSample sav: summaryAdditionalValuesSamples) {
|
||||
for (HuaweiWorkoutSummaryAdditionalValuesSample sav : summaryAdditionalValuesSamples) {
|
||||
additionalValues.put(sav.getKey(), sav.getValue());
|
||||
}
|
||||
|
||||
@@ -566,6 +566,18 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
|
||||
//summaryData.add(ActivitySummaryEntries.STATUS, summary.getStatus() & 0xFF, ActivitySummaryEntries.UNIT_NONE);
|
||||
summaryData.add(ActivitySummaryEntries.TYPE, summary.getType() & 0xFF, ActivitySummaryEntries.UNIT_NONE);
|
||||
|
||||
if (summary.getDuration() > 0) {
|
||||
float totalAvgSpeed = (float)summary.getDistance() / (float)summary.getDuration();
|
||||
LOG.info("totalAvgSpeed: {}", totalAvgSpeed);
|
||||
if(ActivityKind.isSwimActivity(type)) {
|
||||
summaryData.add(ActivitySummaryEntries.PACE_AVG_SECONDS_KM, 100.0f / totalAvgSpeed, ActivitySummaryEntries.UNIT_SECONDS_PER_100_METERS);
|
||||
} else if (ActivityKind.isPaceActivity(type)) {
|
||||
summaryData.add(ActivitySummaryEntries.PACE_AVG_SECONDS_KM,(60f / ((totalAvgSpeed * 3.6f))) * 60f, ActivitySummaryEntries.UNIT_SECONDS_PER_KM);
|
||||
} else {
|
||||
summaryData.add(ActivitySummaryEntries.SPEED_AVG, totalAvgSpeed, ActivitySummaryEntries.UNIT_METERS_PER_SECOND);
|
||||
}
|
||||
}
|
||||
|
||||
if (summary.getStrokes() != -1) {
|
||||
summaryData.add(ActivitySummaryEntries.STROKES, summary.getStrokes(), ActivitySummaryEntries.UNIT_STROKES);
|
||||
}
|
||||
@@ -874,8 +886,13 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
|
||||
avgAltitude = avgAltitude / altitudeCount;
|
||||
|
||||
if (speedCount > 0) {
|
||||
summaryData.add(ActivitySummaryEntries.SPEED_AVG, speed / 10f, ActivitySummaryEntries.UNIT_METERS_PER_SECOND);
|
||||
summaryData.add(ActivitySummaryEntries.SPEED_MAX, maxSpeed / 10f, ActivitySummaryEntries.UNIT_METERS_PER_SECOND);
|
||||
if(ActivityKind.isSwimActivity(type)) {
|
||||
summaryData.add(ActivitySummaryEntries.PACE_MAX, 100.0f / (maxSpeed/ 10f) , ActivitySummaryEntries.UNIT_SECONDS_PER_100_METERS);
|
||||
} else if (ActivityKind.isPaceActivity(type)) {
|
||||
summaryData.add(ActivitySummaryEntries.PACE_MAX,(60f / ((maxSpeed/ 10f) * 3.6)) * 60f , ActivitySummaryEntries.UNIT_SECONDS_PER_KM);
|
||||
} else {
|
||||
summaryData.add(ActivitySummaryEntries.SPEED_MAX, maxSpeed / 10f, ActivitySummaryEntries.UNIT_METERS_PER_SECOND);
|
||||
}
|
||||
}
|
||||
|
||||
if (avgStepRate > 0) {
|
||||
|
||||
Reference in New Issue
Block a user