diff --git a/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java b/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java index e82e757ca..3b3388229 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java @@ -17,6 +17,7 @@ package de.dennisguse.opentracks; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.Menu; @@ -46,6 +47,7 @@ import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; import de.dennisguse.opentracks.settings.SettingsActivity; import de.dennisguse.opentracks.util.IntentDashboardUtils; import de.dennisguse.opentracks.util.IntentUtils; +import de.dennisguse.opentracks.util.PreferencesUtils; /** * An activity to show the track detail, record a new track or resumes an existing one. @@ -67,6 +69,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Confi // The following are set in onCreate. private ContentProviderUtils contentProviderUtils; + private SharedPreferences sharedPreferences; private TrackDataHub trackDataHub; private TrackRecordedBinding viewBinding; @@ -91,11 +94,22 @@ public class TrackRecordedActivity extends AbstractListActivity implements Confi } }; + private final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() { + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (PreferencesUtils.isKey(TrackRecordedActivity.this, R.string.recording_distance_interval_key, key)) { + trackDataHub.setRecordingDistanceInterval(PreferencesUtils.getRecordingDistanceInterval(sharedPreferences, TrackRecordedActivity.this)); + } + } + }; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); contentProviderUtils = new ContentProviderUtils(this); + sharedPreferences = PreferencesUtils.getSharedPreferences(this); + handleIntent(getIntent()); trackDataHub = new TrackDataHub(this); @@ -116,6 +130,10 @@ public class TrackRecordedActivity extends AbstractListActivity implements Confi @Override protected void onStart() { super.onStart(); + + sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); + sharedPreferenceChangeListener.onSharedPreferenceChanged(sharedPreferences, null); + trackDataHub.start(); } @@ -138,6 +156,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Confi super.onStop(); trackRecordingServiceConnection.unbind(this); trackDataHub.stop(); + sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); } @Override diff --git a/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java b/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java index 01f364493..5c6cb2e90 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java @@ -108,6 +108,9 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc if (PreferencesUtils.isKey(TrackRecordingActivity.this, R.string.stats_fullscreen_while_recording_key, key)) { setFullscreenPolicy(); } + if (PreferencesUtils.isKey(TrackRecordingActivity.this, R.string.recording_distance_interval_key, key)) { + trackDataHub.setRecordingDistanceInterval(PreferencesUtils.getRecordingDistanceInterval(sharedPreferences, TrackRecordingActivity.this)); + } if (key == null) return; runOnUiThread(TrackRecordingActivity.this::invalidateOptionsMenu); diff --git a/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java b/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java index 8f402f6e1..773270053 100644 --- a/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java +++ b/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java @@ -78,6 +78,8 @@ public class TrackDataHub { private Track.Id selectedTrackId; + private Distance recordingDistanceInterval; + private TrackRecordingService.RecordingStatus recordingStatus = TrackRecordingService.STATUS_DEFAULT; // Track points sampling state @@ -371,7 +373,7 @@ public class TrackDataHub { samplingFrequency = 1 + (int) (numTotalPoints / targetNumPoints); } - trackStatisticsUpdater.addTrackPoint(trackPoint, Distance.of(50)); //TODO + trackStatisticsUpdater.addTrackPoint(trackPoint, recordingDistanceInterval); // Also include the last point if the selected track is not recording. if ((localNumLoadedTrackPoints % samplingFrequency == 0) || (trackPointId == lastTrackPointId && !isSelectedTrackRecording())) { @@ -417,4 +419,8 @@ public class TrackDataHub { public void setRecordingStatus(TrackRecordingService.RecordingStatus recordingStatus) { this.recordingStatus = recordingStatus; } + + public void setRecordingDistanceInterval(Distance recordingDistanceInterval) { + this.recordingDistanceInterval = recordingDistanceInterval; + } } \ No newline at end of file