From b8061337e2c8c6e1cf1f22b6bac7975fc500595c Mon Sep 17 00:00:00 2001 From: Thomas Kuehne Date: Fri, 1 May 2026 10:28:03 +0000 Subject: [PATCH] Garmin: avoid reading the FIT file twice for auto GPX export --- .../gadgetbridge/model/FitActivityTrackProvider.java | 4 ++++ .../service/devices/garmin/fit/FitImporter.java | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/FitActivityTrackProvider.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/FitActivityTrackProvider.java index 4fbc54a1e6..19a0664d2e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/FitActivityTrackProvider.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/FitActivityTrackProvider.java @@ -58,7 +58,11 @@ public class FitActivityTrackProvider implements ActivityTrackProvider { LOG.error("Failed to parse fit file", e); return null; } + return getActivityTrack(summary, fitFile); + } + @Nullable + public ActivityTrack getActivityTrack(@NonNull final BaseActivitySummary summary, @NonNull final FitFile fitFile) { final ActivityTrack activityTrack = new ActivityTrack(); activityTrack.setName(summary.getName()); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/fit/FitImporter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/fit/FitImporter.java index b792d68749..4d712e679b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/fit/FitImporter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/fit/FitImporter.java @@ -566,7 +566,7 @@ public class FitImporter { switch (fileId.getType()) { case ACTIVITY: - persistWorkout(finalExportFile, session, isReprocessing); + persistWorkout(finalExportFile, session, isReprocessing, fitFile); break; case MONITOR: persistActivitySamples(session); @@ -644,7 +644,7 @@ public class FitImporter { } } - private void persistWorkout(final File file, final DaoSession session, boolean isReprocessing) { + private void persistWorkout(final File file, final DaoSession session, boolean isReprocessing, FitFile fitFile) { LOG.debug("Persisting workout for {}", fileId); Long sessionStart = workoutParser.getSessionStartTime(); @@ -703,7 +703,7 @@ public class FitImporter { // Export to gpx if (AutoGpxExporter.isExportEnabled(gbDevice)) { final FitActivityTrackProvider activityTrackProvider = new FitActivityTrackProvider(); - final ActivityTrack activityTrack = activityTrackProvider.getActivityTrack(summary); + final ActivityTrack activityTrack = activityTrackProvider.getActivityTrack(summary, fitFile); if (activityTrack != null) { AutoGpxExporter.doExport(context, gbDevice, summary, activityTrack); }