diff --git a/MyTracks/src/com/google/android/apps/mytracks/services/PreferenceManager.java b/MyTracks/src/com/google/android/apps/mytracks/services/PreferenceManager.java index 9d4af469f..77e7e7f04 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/PreferenceManager.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/PreferenceManager.java @@ -135,8 +135,13 @@ public class PreferenceManager { MyTracksSettings.DEFAULT_AUTO_RESUME_TRACK_TIMEOUT)); } if (key == null || key.equals(recordingTrackKey)) { - service.setRecordingTrackId( - sharedPreferences.getLong(recordingTrackKey, -1)); + long recordingTrackId = sharedPreferences.getLong(recordingTrackKey, -1); + // Only read the id if it is valid. + // Setting it to -1 should only happen in + // TrackRecordingService.endCurrentTrack() + if (recordingTrackId > 0) { + service.setRecordingTrackId(recordingTrackId); + } } if (key == null || key.equals(splitFrequencyKey)) { service.getSplitManager().setSplitFrequency( diff --git a/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java b/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java index 9ae693538..3104f41b8 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java @@ -890,35 +890,7 @@ public class TrackRecordingService extends Service implements LocationListener { @Override public long startNewTrack() { - Log.d(MyTracksConstants.TAG, "TrackRecordingService.startNewTrack"); - Track track = new Track(); - TripStatistics trackStats = track.getStatistics(); - track.setName("new"); - long startTime = System.currentTimeMillis(); - trackStats.setStartTime(startTime); - track.setStartId(-1); - Uri trackUri = providerUtils.insertTrack(track); - long trackId = Long.parseLong(trackUri.getLastPathSegment()); - track.setId(trackId); - track.setName(String.format(getString(R.string.new_track), trackId)); - providerUtils.updateTrack(track); - recordingTrackId = trackId; - currentWaypointId = insertStatisticsMarker(null); - isRecording = true; - isMoving = true; - statsBuilder = new TripStatisticsBuilder(); - statsBuilder.resumeAt(startTime); - setUpAnnouncer(); - length = 0; - showNotification(); - registerLocationListener(); - splitManager.restore(); - signalManager.restore(); - // Reset the number of auto-resume retries. - SharedPreferences sharedPreferences = - getSharedPreferences(MyTracksSettings.SETTINGS_NAME, 0); - setAutoResumeTrackRetries(sharedPreferences, 0); - return trackId; + return TrackRecordingService.this.startNewTrack(); } /** @@ -989,6 +961,37 @@ public class TrackRecordingService extends Service implements LocationListener { } }; + public long startNewTrack() { + Log.d(MyTracksConstants.TAG, "TrackRecordingService.startNewTrack"); + Track track = new Track(); + TripStatistics trackStats = track.getStatistics(); + track.setName("new"); + long startTime = System.currentTimeMillis(); + trackStats.setStartTime(startTime); + track.setStartId(-1); + Uri trackUri = providerUtils.insertTrack(track); + recordingTrackId = Long.parseLong(trackUri.getLastPathSegment()); + track.setId(recordingTrackId); + track.setName(String.format(getString(R.string.new_track), recordingTrackId)); + providerUtils.updateTrack(track); + currentWaypointId = insertStatisticsMarker(null); + isRecording = true; + isMoving = true; + statsBuilder = new TripStatisticsBuilder(); + statsBuilder.resumeAt(startTime); + setUpAnnouncer(); + length = 0; + showNotification(); + registerLocationListener(); + splitManager.restore(); + signalManager.restore(); + // Reset the number of auto-resume retries. + SharedPreferences sharedPreferences = + getSharedPreferences(MyTracksSettings.SETTINGS_NAME, 0); + setAutoResumeTrackRetries(sharedPreferences, 0); + return recordingTrackId; + } + TripStatistics getTripStatistics() { return statsBuilder.getStatistics(); }