diff --git a/src/main/java/de/dennisguse/opentracks/content/data/Altitude.java b/src/main/java/de/dennisguse/opentracks/content/data/Altitude.java
index 77c467a07..156975e24 100644
--- a/src/main/java/de/dennisguse/opentracks/content/data/Altitude.java
+++ b/src/main/java/de/dennisguse/opentracks/content/data/Altitude.java
@@ -1,5 +1,7 @@
package de.dennisguse.opentracks.content.data;
+import de.dennisguse.opentracks.R;
+
public abstract class Altitude {
private final double altitude_m;
@@ -12,12 +14,18 @@ public abstract class Altitude {
return altitude_m;
}
+ public abstract int getLabelId();
+
public static class WGS84 extends Altitude {
private WGS84(double altitude_m) {
super(altitude_m);
}
+ @Override
+ public int getLabelId() {
+ return R.string.wgs84;
+ }
public static Altitude of(double altitude_m) {
return new WGS84(altitude_m);
@@ -30,6 +38,10 @@ public abstract class Altitude {
super(altitude_m);
}
+ @Override
+ public int getLabelId() {
+ return R.string.egm2008;
+ }
public static Altitude of(double altitude_m) {
return new EGM2008(altitude_m);
diff --git a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java
index aa4f216d8..b0ca3345a 100644
--- a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java
+++ b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java
@@ -276,10 +276,18 @@ public class StatisticsRecordingFragment extends Fragment {
if (preferenceShowAltitude) {
// Current altitude
- Float altitude = latestTrackPoint != null && latestTrackPoint.hasAltitude() ? (float) latestTrackPoint.getAltitude().toM() : null;
+ Float altitude = null;
+ int labelId = R.string.value_unknown;
+ if (latestTrackPoint != null && latestTrackPoint.hasAltitude()) {
+ altitude = (float) latestTrackPoint.getAltitude().toM();
+ labelId = latestTrackPoint.getAltitude().getLabelId();
+ }
+
Pair parts = StringUtils.formatAltitude(getContext(), altitude, preferenceMetricUnits);
viewBinding.statsAltitudeCurrentValue.setText(parts.first);
viewBinding.statsAltitudeCurrentUnit.setText(parts.second);
+
+ viewBinding.statsAltitudeCurrentLabelEgm.setText(labelId);
}
// Set coordinate
@@ -313,7 +321,7 @@ public class StatisticsRecordingFragment extends Fragment {
sharedPreferenceChangeListener.onSharedPreferenceChanged(sharedPreferences, getString(R.string.stats_rate_key));
}
- this.latestTrackPoint = recordingData.getLatestTrackPoint();
+ latestTrackPoint = recordingData.getLatestTrackPoint();
if (latestTrackPoint != null && latestTrackPoint.hasLocation() && !latestTrackPoint.isRecent()) {
latestTrackPoint = null;
}
diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java
index 1807d43ab..618221105 100644
--- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java
+++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java
@@ -652,8 +652,6 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand
trackStatisticsUpdater.addTrackPoint(trackPoint, recordingDistanceInterval);
track.setTrackStatistics(trackStatisticsUpdater.getTrackStatistics());
- recordingDataObservable.postValue(new RecordingData(track, trackPoint, sensorDataSet));
-
contentProviderUtils.updateTrack(track);
} catch (SQLiteException e) {
/*
@@ -761,12 +759,19 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand
//TODO This somehow should happen in the HandlerServer as we create a new TrackPoint.
TrackStatisticsUpdater tmpTrackStatisticsUpdater = new TrackStatisticsUpdater(trackStatisticsUpdater);
TrackPoint tmpLastTrackPoint = new TrackPoint(TrackPoint.Type.TRACKPOINT);
+
+ if (lastTrackPoint != null && lastTrackPoint.hasLocation()) {
+ //TODO Should happen in TrackPoint? via constructor
+ tmpLastTrackPoint.setAltitude(lastTrackPoint.getAltitude());
+ tmpLastTrackPoint.setLongitude(lastTrackPoint.getLongitude());
+ tmpLastTrackPoint.setLatitude(lastTrackPoint.getLatitude());
+ }
+
SensorDataSet sensorDataSet = fillWithSensorDataSet(tmpLastTrackPoint);
tmpTrackStatisticsUpdater.addTrackPoint(tmpLastTrackPoint, recordingDistanceInterval);
track.setTrackStatistics(tmpTrackStatisticsUpdater.getTrackStatistics());
-
recordingDataObservable.postValue(new RecordingData(track, tmpLastTrackPoint, sensorDataSet));
}
diff --git a/src/main/res/layout/statistics_recording.xml b/src/main/res/layout/statistics_recording.xml
index 6193c9efd..6eb88bbe8 100644
--- a/src/main/res/layout/statistics_recording.xml
+++ b/src/main/res/layout/statistics_recording.xml
@@ -269,7 +269,7 @@
android:id="@+id/stats_altitude_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- app:constraint_referenced_ids="stats_altitude_horizontal_line,stats_altitude_current_label,stats_altitude_current_value,stats_altitude_current_unit,stats_altitude_gain_label,stats_altitude_gain_value,stats_altitude_gain_unit,stats_altitude_loss_label,stats_altitude_loss_value,stats_altitude_loss_unit,stats_elevation_current_label_egm" />
+ app:constraint_referenced_ids="stats_altitude_horizontal_line,stats_altitude_current_label,stats_altitude_current_value,stats_altitude_current_unit,stats_altitude_gain_label,stats_altitude_gain_value,stats_altitude_gain_unit,stats_altitude_loss_label,stats_altitude_loss_value,stats_altitude_loss_unit,@+id/stats_altitude_current_label_egm" />
OpenTracks
EGM2008
+ WGS84
National Geospatial-Intelligence Agency (NGA)\'s EGM2008 model 5\' minute resolution.