Merge pull request #5493 from osmandapp/location_provider_fix

Location provider fix
This commit is contained in:
Alexander Sytnyk 2018-05-25 19:09:14 +03:00 committed by GitHub
commit d902888f4a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -691,7 +691,8 @@ public class OsmAndLocationProvider implements SensorEventListener {
private void scheduleCheckIfGpsLost(final net.osmand.Location location) { private void scheduleCheckIfGpsLost(final net.osmand.Location location) {
final RoutingHelper routingHelper = app.getRoutingHelper(); final RoutingHelper routingHelper = app.getRoutingHelper();
if (location != null) { if (location != null && routingHelper.isFollowingMode() && routingHelper.getLeftDistance() > 0
&& simulatePosition == null) {
final long fixTime = location.getTime(); final long fixTime = location.getTime();
app.runMessageInUIThreadAndCancelPrevious(LOST_LOCATION_MSG_ID, new Runnable() { app.runMessageInUIThreadAndCancelPrevious(LOST_LOCATION_MSG_ID, new Runnable() {
@ -703,31 +704,30 @@ public class OsmAndLocationProvider implements SensorEventListener {
return; return;
} }
gpsSignalLost = true; gpsSignalLost = true;
if (routingHelper.isFollowingMode() && routingHelper.getLeftDistance() > 0) { if (routingHelper.isFollowingMode() && routingHelper.getLeftDistance() > 0
&& simulatePosition == null) {
routingHelper.getVoiceRouter().gpsLocationLost(); routingHelper.getVoiceRouter().gpsLocationLost();
setLocation(null);
} }
setLocation(null);
} }
}, LOST_LOCATION_CHECK_DELAY); }, LOST_LOCATION_CHECK_DELAY);
if (routingHelper.isFollowingMode() && routingHelper.getLeftDistance() > 0 && simulatePosition == null) { app.runMessageInUIThreadAndCancelPrevious(START_SIMULATE_LOCATION_MSG_ID, new Runnable() {
app.runMessageInUIThreadAndCancelPrevious(START_SIMULATE_LOCATION_MSG_ID, new Runnable() {
@Override @Override
public void run() { public void run() {
net.osmand.Location lastKnown = getLastKnownLocation(); net.osmand.Location lastKnown = getLastKnownLocation();
if (lastKnown != null && lastKnown.getTime() > fixTime) { if (lastKnown != null && lastKnown.getTime() > fixTime) {
// false positive case, still strange how we got here with removeMessages // false positive case, still strange how we got here with removeMessages
return; return;
}
List<RouteSegmentResult> tunnel = routingHelper.getUpcomingTunnel(1000);
if(tunnel != null) {
simulatePosition = new SimulationProvider();
simulatePosition.startSimulation(tunnel, location);
simulatePositionImpl();
}
} }
}, START_LOCATION_SIMULATION_DELAY); List<RouteSegmentResult> tunnel = routingHelper.getUpcomingTunnel(1000);
} if(tunnel != null) {
simulatePosition = new SimulationProvider();
simulatePosition.startSimulation(tunnel, location);
simulatePositionImpl();
}
}
}, START_LOCATION_SIMULATION_DELAY);
} }
} }