Fix phones that do not always set the location time correctly.

This commit is contained in:
Jimmy Shih
2013-03-04 15:07:06 -08:00
parent c3c773eac6
commit 88cb5dd4ca
@@ -827,10 +827,17 @@ public class TrackRecordingService extends Service {
Log.d(TAG, "Ignore onLocationChangedAsync. Poor accuracy.");
return;
}
// Fix for phones that do not set the time field
if (location.getTime() == 0L) {
location.setTime(System.currentTimeMillis());
}
Location lastValidTrackPoint = getLastValidTrackPointInCurrentSegment(track.getId());
long idleTime = lastValidTrackPoint != null ? location.getTime() - lastValidTrackPoint.getTime()
: 0L;
long idleTime = 0L;
if (lastValidTrackPoint != null && location.getTime() > lastValidTrackPoint.getTime()) {
idleTime = location.getTime() - lastValidTrackPoint.getTime();
}
locationListenerPolicy.updateIdleTime(idleTime);
if (currentRecordingInterval != locationListenerPolicy.getDesiredPollingInterval()) {
registerLocationListener();