Merge pull request #5493 from osmandapp/location_provider_fix
Location provider fix
This commit is contained in:
commit
d902888f4a
1 changed files with 20 additions and 20 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue