mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2025-03-12 17:20:21 +01:00
Garmin: Use user profile weight unit
This commit is contained in:
parent
5143128aa9
commit
f3b204366c
@ -3,6 +3,7 @@ package nodomain.freeyourgadget.gadgetbridge.activities.workouts;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_CM;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_KG;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_KILOMETERS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_LB;
|
||||
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_MM;
|
||||
@ -30,11 +31,13 @@ public class WorkoutValueFormatter {
|
||||
|
||||
private final String units;
|
||||
private final String UNIT_IMPERIAL;
|
||||
private final String UNIT_METRIC;
|
||||
private final DecimalFormat df = new DecimalFormat("#.##");
|
||||
|
||||
public WorkoutValueFormatter() {
|
||||
this.units = GBApplication.getPrefs().getString(SettingsActivity.PREF_MEASUREMENT_SYSTEM, GBApplication.getContext().getString(R.string.p_unit_metric));
|
||||
this.UNIT_IMPERIAL = GBApplication.getContext().getString(R.string.p_unit_imperial);
|
||||
this.UNIT_METRIC = GBApplication.getContext().getString(R.string.p_unit_metric);
|
||||
}
|
||||
|
||||
public void toggleRawData() {
|
||||
@ -83,7 +86,13 @@ public class WorkoutValueFormatter {
|
||||
case UNIT_KG:
|
||||
if (units.equals(UNIT_IMPERIAL)) {
|
||||
value = value * 2.2046226f;
|
||||
unit = "lb";
|
||||
unit = UNIT_LB;
|
||||
}
|
||||
break;
|
||||
case UNIT_LB:
|
||||
if (units.equals(UNIT_METRIC)) {
|
||||
value = value / 2.2046226f;
|
||||
unit = UNIT_KG;
|
||||
}
|
||||
break;
|
||||
case UNIT_CM:
|
||||
|
@ -29,6 +29,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitFile;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.RecordData;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.enums.GarminSport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.exception.FitParseException;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.fieldDefinitions.FieldDefinitionMeasurementSystem;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages.FitLap;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages.FitPhysiologicalMetrics;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages.FitRecord;
|
||||
@ -36,6 +37,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages.
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages.FitSet;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages.FitSport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages.FitTimeInZone;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages.FitUserProfile;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
|
||||
|
||||
public class GarminWorkoutParser implements ActivitySummaryParser {
|
||||
@ -47,6 +49,7 @@ public class GarminWorkoutParser implements ActivitySummaryParser {
|
||||
private final List<ActivityPoint> activityPoints = new ArrayList<>();
|
||||
private FitSession session = null;
|
||||
private FitSport sport = null;
|
||||
private FitUserProfile userProfile = null;
|
||||
private FitPhysiologicalMetrics physiologicalMetrics = null;
|
||||
private final List<FitSet> sets = new ArrayList<>();
|
||||
private final List<FitLap> laps = new ArrayList<>();
|
||||
@ -103,6 +106,7 @@ public class GarminWorkoutParser implements ActivitySummaryParser {
|
||||
activityPoints.clear();
|
||||
session = null;
|
||||
sport = null;
|
||||
userProfile = null;
|
||||
physiologicalMetrics = null;
|
||||
sets.clear();
|
||||
laps.clear();
|
||||
@ -139,6 +143,14 @@ public class GarminWorkoutParser implements ActivitySummaryParser {
|
||||
} else if (record instanceof FitLap) {
|
||||
LOG.trace("Lap: {}", record);
|
||||
laps.add((FitLap) record);
|
||||
} else if (record instanceof FitUserProfile) {
|
||||
LOG.trace("User Profile: {}", record);
|
||||
if (userProfile != null) {
|
||||
LOG.warn("Got multiple user profiles - NOT SUPPORTED: {}", record);
|
||||
} else {
|
||||
// We only support 1 user profile
|
||||
userProfile = (FitUserProfile) record;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@ -163,6 +175,13 @@ public class GarminWorkoutParser implements ActivitySummaryParser {
|
||||
}
|
||||
final ActivityKind.CycleUnit cycleUnit = ActivityKind.getCycleUnit(activityKind);
|
||||
|
||||
final String weightUnit;
|
||||
if (userProfile != null && userProfile.getWeightSetting() != null) {
|
||||
weightUnit = FieldDefinitionMeasurementSystem.Type.metric.equals(userProfile.getWeightSetting()) ? UNIT_KG : UNIT_LB;
|
||||
} else {
|
||||
weightUnit = UNIT_KG;
|
||||
}
|
||||
|
||||
summary.setActivityKind(activityKind.getCode());
|
||||
|
||||
if (session.getTotalElapsedTime() != null) {
|
||||
@ -495,7 +514,7 @@ public class GarminWorkoutParser implements ActivitySummaryParser {
|
||||
}
|
||||
|
||||
if (set.getWeight() != null) {
|
||||
columns.add(new ActivitySummaryValue(set.getWeight(), UNIT_KG));
|
||||
columns.add(new ActivitySummaryValue(set.getWeight(), weightUnit));
|
||||
} else {
|
||||
columns.add(new ActivitySummaryValue("stats_empty_value"));
|
||||
}
|
||||
|
@ -208,6 +208,7 @@ public class ActivitySummaryEntries {
|
||||
public static final String UNIT_STRING = "string";
|
||||
public static final String UNIT_RAW_STRING = "raw_string";
|
||||
public static final String UNIT_KG = "kg";
|
||||
public static final String UNIT_LB = "lb";
|
||||
public static final String UNIT_RPM = "unit_rpm";
|
||||
public static final String UNIT_MM = "unit_millimeter";
|
||||
public static final String UNIT_WATT = "unit_watt";
|
||||
|
@ -85,6 +85,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages.
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages.FitSport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages.FitStressLevel;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages.FitTimeInZone;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.messages.FitUserProfile;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
|
||||
@ -266,6 +267,8 @@ public class FitImporter {
|
||||
// handled in workout parser
|
||||
} else if (record instanceof FitTimeInZone) {
|
||||
// handled in workout parser
|
||||
} else if (record instanceof FitUserProfile) {
|
||||
// handled in workout parser
|
||||
} else if (record instanceof FitHrvSummary) {
|
||||
final FitHrvSummary hrvSummary = (FitHrvSummary) record;
|
||||
LOG.trace("HRV summary at {}: {}", ts, record);
|
||||
|
@ -29,6 +29,7 @@ public class FieldDefinitionMeasurementSystem extends FieldDefinition {
|
||||
|
||||
public enum Type {
|
||||
metric,
|
||||
imperial,
|
||||
;
|
||||
|
||||
public static Type fromId(int id) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user