Huawei: Swim workout pace units

This commit is contained in:
Me7c7
2025-07-22 19:14:03 +03:00
parent 6de321239f
commit af6b6c9704
4 changed files with 41 additions and 15 deletions
@@ -7,6 +7,8 @@ import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_METERS; import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_METERS;
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_METERS_PER_SECOND; import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_METERS_PER_SECOND;
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_MM; import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_MM;
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_SECONDS_PER_100_METERS;
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_SECONDS_PER_100_YARDS;
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_SECONDS_PER_KM; import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_SECONDS_PER_KM;
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_SECONDS_PER_M; import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_SECONDS_PER_M;
@@ -149,12 +151,30 @@ public class WorkoutValueFormatter {
} }
} }
break; break;
case UNIT_SECONDS_PER_100_METERS:
if (units.equals(UNIT_IMPERIAL)) {
value = (value * 0.9144) / 60D;
unit = "minutes_100yd";
} else { //metric
value = value / 60D;
unit = "minutes_100m";
}
break;
case UNIT_SECONDS_PER_100_YARDS:
if (units.equals(UNIT_IMPERIAL)) {
value = value / 60D;
unit = "minutes_100yd";
} else { //metric
value = (value * 1.0936133D) / 60D;
unit = "minutes_100m";
}
break;
} }
} }
if (unit.equals("seconds") && !show_raw_data) { //rather then plain seconds, show formatted duration if (unit.equals("seconds") && !show_raw_data) { //rather then plain seconds, show formatted duration
return DateTimeUtils.formatDurationHoursMinutes((long) value, TimeUnit.SECONDS); return DateTimeUtils.formatDurationHoursMinutes((long) value, TimeUnit.SECONDS);
} else if (unit.equals("minutes_km") || unit.equals("minutes_mi")) { } else if (unit.equals("minutes_km") || unit.equals("minutes_mi") || unit.equals("minutes_100m") || unit.equals("minutes_100yd")) {
// Format pace // Format pace
return String.format( return String.format(
Locale.getDefault(), Locale.getDefault(),
@@ -216,6 +216,8 @@ public class ActivitySummaryEntries {
public static final String UNIT_MM = "unit_millimeter"; public static final String UNIT_MM = "unit_millimeter";
public static final String UNIT_WATT = "unit_watt"; public static final String UNIT_WATT = "unit_watt";
public static final String UNIT_JOULE = "unit_joule"; public static final String UNIT_JOULE = "unit_joule";
public static final String UNIT_SECONDS_PER_100_METERS = "seconds_100m";
public static final String UNIT_SECONDS_PER_100_YARDS = "seconds_100yd";
public static final String GROUP_PACE = "Pace"; public static final String GROUP_PACE = "Pace";
public static final String GROUP_ACTIVITY = "Activity"; public static final String GROUP_ACTIVITY = "Activity";
@@ -251,15 +253,15 @@ public class ActivitySummaryEntries {
*/ */
public static final String INTERNAL_HAS_GPS = "internal_hasGps"; public static final String INTERNAL_HAS_GPS = "internal_hasGps";
public static final Map<String, Integer> HR_ZONES = new LinkedHashMap<String, Integer>() {{ public static final Map<String, Integer> HR_ZONES = new LinkedHashMap<>() {{
put(HR_ZONE_NA, 0); put(HR_ZONE_NA, 0);
put(HR_ZONE_WARM_UP, R.color.hr_zone_warm_up_color); put(HR_ZONE_WARM_UP, R.color.hr_zone_warm_up_color);
put(HR_ZONE_EASY, R.color.hr_zone_easy_color); put(HR_ZONE_EASY, R.color.hr_zone_easy_color);
put(HR_ZONE_FAT_BURN, R.color.hr_zone_easy_color); put(HR_ZONE_FAT_BURN, R.color.hr_zone_easy_color);
put(HR_ZONE_AEROBIC, R.color.hr_zone_aerobic_color); put(HR_ZONE_AEROBIC, R.color.hr_zone_aerobic_color);
put(HR_ZONE_ANAEROBIC, R.color.hr_zone_threshold_color); put(HR_ZONE_ANAEROBIC, R.color.hr_zone_threshold_color);
put(HR_ZONE_THRESHOLD, R.color.hr_zone_threshold_color); put(HR_ZONE_THRESHOLD, R.color.hr_zone_threshold_color);
put(HR_ZONE_EXTREME, R.color.hr_zone_maximum_color); put(HR_ZONE_EXTREME, R.color.hr_zone_maximum_color);
put(HR_ZONE_MAXIMUM, R.color.hr_zone_maximum_color); put(HR_ZONE_MAXIMUM, R.color.hr_zone_maximum_color);
}}; }};
} }
@@ -1074,11 +1074,13 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
if (sample.getType() != unitType) if (sample.getType() != unitType)
continue; continue;
// TODO: add proper units for type == 1. imperial
final List<ActivitySummaryValue> columns = new LinkedList<>(); final List<ActivitySummaryValue> columns = new LinkedList<>();
// TODO: add proper units for type == 1. MILES
columns.add(new ActivitySummaryValue(currentIndex++, ActivitySummaryEntries.UNIT_NONE)); columns.add(new ActivitySummaryValue(currentIndex++, ActivitySummaryEntries.UNIT_NONE));
columns.add(new ActivitySummaryValue(getSwimStyle(sample.getSwimType()), ActivitySummaryEntries.UNIT_NONE)); columns.add(new ActivitySummaryValue(getSwimStyle(sample.getSwimType()), ActivitySummaryEntries.UNIT_NONE));
columns.add(new ActivitySummaryValue(sample.getDistance(), ActivitySummaryEntries.UNIT_METERS)); String segmentDistanceUnit = sample.getType() == 1?ActivitySummaryEntries.UNIT_YARD:ActivitySummaryEntries.UNIT_METERS;
columns.add(new ActivitySummaryValue(sample.getDistance(), segmentDistanceUnit));
columns.add(new ActivitySummaryValue(sample.getTime(), ActivitySummaryEntries.UNIT_SECONDS)); columns.add(new ActivitySummaryValue(sample.getTime(), ActivitySummaryEntries.UNIT_SECONDS));
@@ -1092,11 +1094,11 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
); );
final List<ActivitySummaryValue> columns2 = new LinkedList<>(); final List<ActivitySummaryValue> columns2 = new LinkedList<>();
// TODO: add proper units for type == 1. MILES and SECONDS PER MILE
columns2.add(new ActivitySummaryValue("", ActivitySummaryEntries.UNIT_NONE)); columns2.add(new ActivitySummaryValue("", ActivitySummaryEntries.UNIT_NONE));
columns2.add(new ActivitySummaryValue(sample.getStrokes(), ActivitySummaryEntries.UNIT_STROKES)); columns2.add(new ActivitySummaryValue(sample.getStrokes(), ActivitySummaryEntries.UNIT_STROKES));
columns2.add(new ActivitySummaryValue(sample.getAvgSwolf(), ActivitySummaryEntries.UNIT_NONE)); columns2.add(new ActivitySummaryValue(sample.getAvgSwolf(), ActivitySummaryEntries.UNIT_NONE));
columns2.add(new ActivitySummaryValue(sample.getPace(), ActivitySummaryEntries.UNIT_NONE)); //TODO: seconds / 100 meters String segmentPaceUnit = sample.getType() == 1?ActivitySummaryEntries.UNIT_SECONDS_PER_100_YARDS:ActivitySummaryEntries.UNIT_SECONDS_PER_100_METERS;
columns2.add(new ActivitySummaryValue(sample.getPace(), segmentPaceUnit));
segmentsTable.put("segments_table_" + tableIndex++, segmentsTable.put("segments_table_" + tableIndex++,
+2
View File
@@ -2669,6 +2669,8 @@
<string name="km">km</string> <string name="km">km</string>
<string name="mi">mi</string> <string name="mi">mi</string>
<string name="degrees">degrees</string> <string name="degrees">degrees</string>
<string name="minutes_100m">min/100m</string>
<string name="minutes_100yd">min/100yd</string>
<string name="Pace">Pace</string> <string name="Pace">Pace</string>
<!-- activity summary groups--> <!-- activity summary groups-->
<string name="Strokes">Strokes</string> <string name="Strokes">Strokes</string>