forked from upstream-mirrors/OpenTracks
Introduce getLastModified() in Tracks class and fixe a NullPointerException in service if null intent is passed by the system.
This commit is contained in:
@@ -196,4 +196,13 @@ public class Track implements Parcelable {
|
|||||||
public void setStatistics(TripStatistics stats) {
|
public void setStatistics(TripStatistics stats) {
|
||||||
this.stats = stats;
|
this.stats = stats;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the last time this track was modified, or -1 if not available.
|
||||||
|
* @return the last modified time, in milliseconds, since the epoch.
|
||||||
|
*/
|
||||||
|
public long getLastModified() {
|
||||||
|
// Don't use locations, just rely on stats.
|
||||||
|
return stats != null ? stats.getStopTime() : -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ import android.os.PowerManager;
|
|||||||
import android.os.PowerManager.WakeLock;
|
import android.os.PowerManager.WakeLock;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
|
|
||||||
@@ -728,13 +727,16 @@ public class TrackRecordingService extends Service implements LocationListener {
|
|||||||
private void handleStartCommand(Intent intent, int startId) {
|
private void handleStartCommand(Intent intent, int startId) {
|
||||||
Log.d(MyTracksConstants.TAG,
|
Log.d(MyTracksConstants.TAG,
|
||||||
"TrackRecordingService.handleStartCommand: " + startId);
|
"TrackRecordingService.handleStartCommand: " + startId);
|
||||||
|
|
||||||
// Load previous track.
|
// Load previous track.
|
||||||
Track track = getRecordingTrack();
|
Track track = getRecordingTrack();
|
||||||
|
|
||||||
// Check if called on phone reboot with resume intent.
|
// Check if called on phone reboot with resume intent.
|
||||||
if (intent.getBooleanExtra(RESUME_TRACK_EXTRA_NAME, false)) {
|
if (intent != null &&
|
||||||
|
intent.getBooleanExtra(RESUME_TRACK_EXTRA_NAME, false)) {
|
||||||
Log.d(MyTracksConstants.TAG, "TrackRecordingService: requested resume");
|
Log.d(MyTracksConstants.TAG, "TrackRecordingService: requested resume");
|
||||||
// Make sure that the current track exists and is fresh enough.
|
// Make sure that the current track exists and is fresh enough.
|
||||||
|
// Note: Sometimes we may get null intent, so avoid a NPE.
|
||||||
if (track == null || !maybeResumeTrack(track)) {
|
if (track == null || !maybeResumeTrack(track)) {
|
||||||
Log.i(MyTracksConstants.TAG,
|
Log.i(MyTracksConstants.TAG,
|
||||||
"TrackRecordingService: Not resuming because the previous track "
|
"TrackRecordingService: Not resuming because the previous track "
|
||||||
@@ -764,16 +766,12 @@ public class TrackRecordingService extends Service implements LocationListener {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the last recorded point's time is within acceptable range.
|
// Check if the last modified time is within the acceptable range.
|
||||||
List<Location> locations = track.getLocations();
|
long lastModified = track.getLastModified();
|
||||||
Log.d(MyTracksConstants.TAG,
|
Log.d(MyTracksConstants.TAG,
|
||||||
"maybeResumeTrack: Found " + (locations != null ? locations.size() : 0)
|
"maybeResumeTrack: lastModified = " + lastModified);
|
||||||
+ " locations in the previous track");
|
return lastModified != -1 && System.currentTimeMillis() - lastModified <=
|
||||||
|
autoResumeTrackTimeout * 60 * 1000;
|
||||||
return locations != null && !locations.isEmpty() &&
|
|
||||||
System.currentTimeMillis()
|
|
||||||
- locations.get(locations.size() - 1).getTime() <=
|
|
||||||
autoResumeTrackTimeout * 60 * 1000;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isRecording() {
|
public boolean isRecording() {
|
||||||
|
|||||||
Reference in New Issue
Block a user