From 1eeb7063302200fe092847a55be0243926e7b978 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Wed, 5 Aug 2026 19:13:16 +0200 Subject: [PATCH] Bugfix: HealthConnect requires unique timestamps for locations. Part of #2376. --- .../exporter/HealthConnectWorker.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/io/healthconnect/exporter/HealthConnectWorker.java b/src/main/java/de/dennisguse/opentracks/io/healthconnect/exporter/HealthConnectWorker.java index 5d24b10f5..568ac22c1 100644 --- a/src/main/java/de/dennisguse/opentracks/io/healthconnect/exporter/HealthConnectWorker.java +++ b/src/main/java/de/dennisguse/opentracks/io/healthconnect/exporter/HealthConnectWorker.java @@ -196,14 +196,17 @@ public class HealthConnectWorker extends Worker { Position position = trackPoint.position(); if (position.hasLocation()) { - locations.add(new ExerciseRoute.Location( - trackPoint.getTime(), - position.latitude(), - position.longitude(), - position.horizontalAccuracy() != null ? Length.meters(position.horizontalAccuracy().toM()) : null, - position.verticalAccuracy() != null ? Length.meters(position.verticalAccuracy().toM()) : null, - position.altitude() != null ? Length.meters(position.altitude().toM()) : null) - ); + //ExcerciseRoute does not allow duplicated timestamps. + if (locations.stream().noneMatch(location -> location.getTime().equals(position.time()))) { + locations.add(new ExerciseRoute.Location( + trackPoint.getTime(), + position.latitude(), + position.longitude(), + position.horizontalAccuracy() != null ? Length.meters(position.horizontalAccuracy().toM()) : null, + position.verticalAccuracy() != null ? Length.meters(position.verticalAccuracy().toM()) : null, + position.altitude() != null ? Length.meters(position.altitude().toM()) : null) + ); + } } if (position.hasSpeed()) {