Bugfix: TrackRecordingService can only start sensors once.

Fixes #1780.
This commit is contained in:
Dennis Guse
2023-12-25 20:55:32 +01:00
parent 0ee4a4e72f
commit 6cd627e832
@@ -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);