diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java index 734b7b088..35566dcc9 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java @@ -163,6 +163,7 @@ public class TrackRecordingService extends Service implements TrackPointCreator. Log.w(TAG, "Ignore startNewTrack. Already recording."); return null; } + Log.i(TAG, "startNewTrack"); // Set recording status Track.Id trackId = trackRecordingManager.startNewTrack(); @@ -177,6 +178,7 @@ public class TrackRecordingService extends Service implements TrackPointCreator. Log.w(TAG, "Cannot resume a non-existing track."); return; } + Log.i(TAG, "resumeTrack"); updateRecordingStatus(RecordingStatus.record(trackId)); @@ -193,12 +195,19 @@ public class TrackRecordingService extends Service implements TrackPointCreator. } public void tryStartSensors() { - if (isRecording()) return; + if (isSensorStarted()) return; + + Log.i(TAG, "tryStartSensors"); startSensors(); } - private void startSensors() { + private synchronized void startSensors() { + if (isSensorStarted()) { + Log.i(TAG, "sensors already started; skipping"); + return; + } + Log.i(TAG, "startSensors"); wakeLock = SystemUtils.acquireWakeLock(this, wakeLock); trackPointCreator.start(this, handler); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -336,6 +345,10 @@ public class TrackRecordingService extends Service implements TrackPointCreator. return recordingStatus.isRecording(); } + private boolean isSensorStarted() { + return wakeLock != null; + } + @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, @Nullable String key) { voiceAnnouncementManager.onSharedPreferenceChanged(sharedPreferences, key);