Skip to content

Commit 11a743e

Browse files
committed
Allow multiple route simulations with NavigationView
1 parent c35de6f commit 11a743e

File tree

4 files changed

+27
-9
lines changed

4 files changed

+27
-9
lines changed
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.mapbox.services.android.navigation.ui.v5.location;
1+
package com.mapbox.services.android.navigation.ui.v5;
22

33
import android.content.Context;
44

@@ -7,21 +7,23 @@
77
import com.mapbox.api.directions.v5.models.DirectionsRoute;
88
import com.mapbox.services.android.navigation.v5.location.replay.ReplayRouteLocationEngine;
99

10-
public class LocationEngineConductor {
10+
class LocationEngineConductor {
1111

1212
private LocationEngine locationEngine;
1313

14-
public void initializeLocationEngine(Context context, LocationEngine locationEngine, boolean shouldReplayRoute) {
14+
void initializeLocationEngine(Context context, LocationEngine locationEngine, boolean shouldReplayRoute) {
1515
initialize(context, locationEngine, shouldReplayRoute);
1616
}
1717

18-
public void updateSimulatedRoute(DirectionsRoute route) {
18+
boolean updateSimulatedRoute(DirectionsRoute route) {
1919
if (locationEngine instanceof ReplayRouteLocationEngine) {
2020
((ReplayRouteLocationEngine) locationEngine).assign(route);
21+
return true;
2122
}
23+
return false;
2224
}
2325

24-
public LocationEngine obtainLocationEngine() {
26+
LocationEngine obtainLocationEngine() {
2527
return locationEngine;
2628
}
2729

libandroid-navigation-ui/src/main/java/com/mapbox/services/android/navigation/ui/v5/NavigationViewModel.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import com.mapbox.services.android.navigation.ui.v5.feedback.FeedbackItem;
2222
import com.mapbox.services.android.navigation.ui.v5.instruction.BannerInstructionModel;
2323
import com.mapbox.services.android.navigation.ui.v5.instruction.InstructionModel;
24-
import com.mapbox.services.android.navigation.ui.v5.location.LocationEngineConductor;
2524
import com.mapbox.services.android.navigation.ui.v5.route.OffRouteEvent;
2625
import com.mapbox.services.android.navigation.ui.v5.route.ViewRouteFetcher;
2726
import com.mapbox.services.android.navigation.ui.v5.route.ViewRouteListener;
@@ -241,7 +240,7 @@ void updateRoute(DirectionsRoute route) {
241240
this.route.setValue(route);
242241
if (!isChangingConfigurations) {
243242
startNavigation(route);
244-
locationEngineConductor.updateSimulatedRoute(route);
243+
updateReplayEngine(route);
245244
sendEventOnRerouteAlong(route);
246245
isOffRoute.setValue(false);
247246
}
@@ -412,6 +411,13 @@ private void startNavigation(DirectionsRoute route) {
412411
}
413412
}
414413

414+
private void updateReplayEngine(DirectionsRoute route) {
415+
if (locationEngineConductor.updateSimulatedRoute(route)) {
416+
LocationEngine replayEngine = locationEngineConductor.obtainLocationEngine();
417+
navigation.setLocationEngine(replayEngine);
418+
}
419+
}
420+
415421
private void endNavigation() {
416422
if (navigation != null) {
417423
navigation.onDestroy();

libandroid-navigation-ui/src/test/java/com/mapbox/services/android/navigation/ui/v5/LocationEngineConductorTest.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import android.support.annotation.NonNull;
77

88
import com.mapbox.android.core.location.LocationEngine;
9-
import com.mapbox.services.android.navigation.ui.v5.location.LocationEngineConductor;
9+
import com.mapbox.api.directions.v5.models.DirectionsRoute;
1010
import com.mapbox.services.android.navigation.v5.location.replay.ReplayRouteLocationEngine;
1111

1212
import org.junit.Test;
@@ -37,6 +37,17 @@ public void onInitWithSimulation_replayEngineIsProvided() {
3737
assertTrue(locationEngine instanceof ReplayRouteLocationEngine);
3838
}
3939

40+
@Test
41+
public void onInitWithSimulation_replayEngineIsUpdated() {
42+
LocationEngineConductor locationEngineConductor = new LocationEngineConductor();
43+
boolean simulateRouteEnabled = true;
44+
locationEngineConductor.initializeLocationEngine(createMockContext(), null, simulateRouteEnabled);
45+
46+
boolean didUpdate = locationEngineConductor.updateSimulatedRoute(mock(DirectionsRoute.class));
47+
48+
assertTrue(didUpdate);
49+
}
50+
4051
@Test
4152
public void onInitWithSimulationAndCustomEngine_customEngineIsProvided() {
4253
LocationEngineConductor locationEngineConductor = new LocationEngineConductor();

libandroid-navigation-ui/src/test/java/com/mapbox/services/android/navigation/ui/v5/NavigationViewModelTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.app.Application;
44

55
import com.mapbox.api.directions.v5.models.DirectionsRoute;
6-
import com.mapbox.services.android.navigation.ui.v5.location.LocationEngineConductor;
76
import com.mapbox.services.android.navigation.v5.navigation.MapboxNavigation;
87

98
import org.junit.Test;

0 commit comments

Comments
 (0)