forked from upstream-mirrors/OpenTracks
Bugfix: TrackRecordingService can only start sensors once.
Fixes #1780.
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user