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.