From 5c2a6a78c4d33a1d6d01e7c7fc2b2c96a143c602 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Thu, 5 Sep 2024 22:02:04 +0200 Subject: [PATCH] Bugfix: KML 2.3 export must use heartrate as field name. Fixes #1961. --- .../opentracks/io/file/exporter/KMLTrackExporter.java | 6 +++--- .../opentracks/io/file/importer/KmlTrackImporter.java | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/KMLTrackExporter.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/KMLTrackExporter.java index a1c47c685..833e9592d 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/KMLTrackExporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/KMLTrackExporter.java @@ -68,7 +68,7 @@ public class KMLTrackExporter implements TrackExporter { public static final String EXTENDED_DATA_TYPE_SPEED = "speed"; public static final String EXTENDED_DATA_TYPE_DISTANCE = "distance"; public static final String EXTENDED_DATA_TYPE_CADENCE = "cadence"; - public static final String EXTENDED_DATA_TYPE_HEART_RATE = "heart_rate"; + public static final String EXTENDED_DATA_TYPE_HEARTRATE = "heartrate"; public static final String EXTENDED_DATA_TYPE_POWER = "power"; public static final String EXTENDED_DATA_TYPE_ALTITUDE_GAIN = "elevation_gain"; public static final String EXTENDED_DATA_TYPE_ALTITUDE_LOSS = "elevation_loss"; @@ -253,7 +253,7 @@ public class KMLTrackExporter implements TrackExporter { writeSimpleArrayStyle(EXTENDED_DATA_TYPE_SPEED, context.getString(R.string.description_speed_ms)); writeSimpleArrayStyle(EXTENDED_DATA_TYPE_POWER, context.getString(R.string.description_sensor_power)); writeSimpleArrayStyle(EXTENDED_DATA_TYPE_CADENCE, context.getString(R.string.description_sensor_cadence)); - writeSimpleArrayStyle(EXTENDED_DATA_TYPE_HEART_RATE, context.getString(R.string.description_sensor_heart_rate)); + writeSimpleArrayStyle(EXTENDED_DATA_TYPE_HEARTRATE, context.getString(R.string.description_sensor_heart_rate)); printWriter.println(""); } @@ -348,7 +348,7 @@ public class KMLTrackExporter implements TrackExporter { writeSimpleArraySensorData(cadenceList, EXTENDED_DATA_TYPE_CADENCE); } if (heartRateList.stream().anyMatch(Objects::nonNull)) { - writeSimpleArraySensorData(heartRateList, EXTENDED_DATA_TYPE_HEART_RATE); + writeSimpleArraySensorData(heartRateList, EXTENDED_DATA_TYPE_HEARTRATE); } if (altitudeGainList.stream().anyMatch(Objects::nonNull)) { writeSimpleArraySensorData(altitudeGainList, EXTENDED_DATA_TYPE_ALTITUDE_GAIN); diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/KmlTrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/KmlTrackImporter.java index 457388b41..31895ffbf 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/KmlTrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/KmlTrackImporter.java @@ -82,6 +82,8 @@ public class KmlTrackImporter extends DefaultHandler implements XMLImporter.Trac private static final String TAG_UUID = "opentracks:trackid"; private static final String ATTRIBUTE_NAME = "name"; + // Until v4.13.0, was in contradiction with KML2.3 standard; keeping backward compatibility. + public static final String EXTENDED_DATA_TYPE_HEART_RATE_LEGACY = "heart_rate"; private Locator locator; @@ -426,7 +428,8 @@ public class KmlTrackImporter extends DefaultHandler implements XMLImporter.Trac case KMLTrackExporter.EXTENDED_DATA_TYPE_SPEED -> sensorSpeedList.add(value); case KMLTrackExporter.EXTENDED_DATA_TYPE_DISTANCE -> sensorDistanceList.add(value); case KMLTrackExporter.EXTENDED_DATA_TYPE_POWER -> sensorPowerList.add(value); - case KMLTrackExporter.EXTENDED_DATA_TYPE_HEART_RATE -> sensorHeartRateList.add(value); + case KMLTrackExporter.EXTENDED_DATA_TYPE_HEARTRATE, + EXTENDED_DATA_TYPE_HEART_RATE_LEGACY -> sensorHeartRateList.add(value); case KMLTrackExporter.EXTENDED_DATA_TYPE_CADENCE -> sensorCadenceList.add(value); case KMLTrackExporter.EXTENDED_DATA_TYPE_ALTITUDE_GAIN -> altitudeGainList.add(value); case KMLTrackExporter.EXTENDED_DATA_TYPE_ALTITUDE_LOSS -> altitudeLossList.add(value);