forked from upstream-mirrors/OpenTracks
Fix phones that do not always set the location time correctly.
This commit is contained in:
@@ -827,10 +827,17 @@ public class TrackRecordingService extends Service {
|
|||||||
Log.d(TAG, "Ignore onLocationChangedAsync. Poor accuracy.");
|
Log.d(TAG, "Ignore onLocationChangedAsync. Poor accuracy.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fix for phones that do not set the time field
|
||||||
|
if (location.getTime() == 0L) {
|
||||||
|
location.setTime(System.currentTimeMillis());
|
||||||
|
}
|
||||||
|
|
||||||
Location lastValidTrackPoint = getLastValidTrackPointInCurrentSegment(track.getId());
|
Location lastValidTrackPoint = getLastValidTrackPointInCurrentSegment(track.getId());
|
||||||
long idleTime = lastValidTrackPoint != null ? location.getTime() - lastValidTrackPoint.getTime()
|
long idleTime = 0L;
|
||||||
: 0L;
|
if (lastValidTrackPoint != null && location.getTime() > lastValidTrackPoint.getTime()) {
|
||||||
|
idleTime = location.getTime() - lastValidTrackPoint.getTime();
|
||||||
|
}
|
||||||
locationListenerPolicy.updateIdleTime(idleTime);
|
locationListenerPolicy.updateIdleTime(idleTime);
|
||||||
if (currentRecordingInterval != locationListenerPolicy.getDesiredPollingInterval()) {
|
if (currentRecordingInterval != locationListenerPolicy.getDesiredPollingInterval()) {
|
||||||
registerLocationListener();
|
registerLocationListener();
|
||||||
|
|||||||
Reference in New Issue
Block a user