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.");
|
Log.w(TAG, "Ignore startNewTrack. Already recording.");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
Log.i(TAG, "startNewTrack");
|
||||||
|
|
||||||
// Set recording status
|
// Set recording status
|
||||||
Track.Id trackId = trackRecordingManager.startNewTrack();
|
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.");
|
Log.w(TAG, "Cannot resume a non-existing track.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Log.i(TAG, "resumeTrack");
|
||||||
|
|
||||||
updateRecordingStatus(RecordingStatus.record(trackId));
|
updateRecordingStatus(RecordingStatus.record(trackId));
|
||||||
|
|
||||||
@@ -193,12 +195,19 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void tryStartSensors() {
|
public void tryStartSensors() {
|
||||||
if (isRecording()) return;
|
if (isSensorStarted()) return;
|
||||||
|
|
||||||
|
Log.i(TAG, "tryStartSensors");
|
||||||
|
|
||||||
startSensors();
|
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);
|
wakeLock = SystemUtils.acquireWakeLock(this, wakeLock);
|
||||||
trackPointCreator.start(this, handler);
|
trackPointCreator.start(this, handler);
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||||
@@ -336,6 +345,10 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
|
|||||||
return recordingStatus.isRecording();
|
return recordingStatus.isRecording();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isSensorStarted() {
|
||||||
|
return wakeLock != null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, @Nullable String key) {
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, @Nullable String key) {
|
||||||
voiceAnnouncementManager.onSharedPreferenceChanged(sharedPreferences, key);
|
voiceAnnouncementManager.onSharedPreferenceChanged(sharedPreferences, key);
|
||||||
|
|||||||
Reference in New Issue
Block a user