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