Skip to content

Commit 9569e89

Browse files
committed
Show it with an example
1 parent 93bdc60 commit 9569e89

File tree

3 files changed

+32
-36
lines changed

3 files changed

+32
-36
lines changed

libnavigation-core/api/current.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1025,15 +1025,18 @@ package com.mapbox.navigation.core.telemetry.events {
10251025
package com.mapbox.navigation.core.trip {
10261026

10271027
@com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI public final class MapboxTripStarter implements com.mapbox.navigation.core.lifecycle.MapboxNavigationObserver {
1028+
method public static com.mapbox.navigation.core.trip.MapboxTripStarter create();
10281029
method public com.mapbox.navigation.core.trip.MapboxTripStarterOptions getOptions();
10291030
method public static com.mapbox.navigation.core.trip.MapboxTripStarter getRegisteredInstance();
10301031
method public void onAttached(com.mapbox.navigation.core.MapboxNavigation mapboxNavigation);
10311032
method public void onDetached(com.mapbox.navigation.core.MapboxNavigation mapboxNavigation);
1033+
method @kotlin.jvm.Throws(exceptionClasses=IllegalStateException::class) public void setLocationPermissionGranted(boolean granted) throws java.lang.IllegalStateException;
10321034
method public com.mapbox.navigation.core.trip.MapboxTripStarter setOptions(com.mapbox.navigation.core.trip.MapboxTripStarterOptions options);
10331035
field public static final com.mapbox.navigation.core.trip.MapboxTripStarter.Companion Companion;
10341036
}
10351037

10361038
public static final class MapboxTripStarter.Companion {
1039+
method public com.mapbox.navigation.core.trip.MapboxTripStarter create();
10371040
method public com.mapbox.navigation.core.trip.MapboxTripStarter getRegisteredInstance();
10381041
}
10391042

@@ -1053,17 +1056,14 @@ package com.mapbox.navigation.core.trip {
10531056
@com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI public final class MapboxTripStarterOptions {
10541057
method public com.mapbox.navigation.core.replay.route.ReplayRouteSessionOptions getReplayRouteSessionOptions();
10551058
method public String getTripType();
1056-
method public boolean isLocationPermissionGranted();
10571059
method public com.mapbox.navigation.core.trip.MapboxTripStarterOptions.Builder toBuilder();
1058-
property public final boolean isLocationPermissionGranted;
10591060
property public final com.mapbox.navigation.core.replay.route.ReplayRouteSessionOptions replayRouteSessionOptions;
10601061
property public final String tripType;
10611062
}
10621063

10631064
public static final class MapboxTripStarterOptions.Builder {
10641065
ctor public MapboxTripStarterOptions.Builder();
10651066
method public com.mapbox.navigation.core.trip.MapboxTripStarterOptions build();
1066-
method public com.mapbox.navigation.core.trip.MapboxTripStarterOptions.Builder isLocationPermissionGranted(boolean isLocationPermissionGranted);
10671067
method public com.mapbox.navigation.core.trip.MapboxTripStarterOptions.Builder replayRouteSessionOptions(com.mapbox.navigation.core.replay.route.ReplayRouteSessionOptions options);
10681068
method public com.mapbox.navigation.core.trip.MapboxTripStarterOptions.Builder tripType(@com.mapbox.navigation.core.trip.MapboxTripStarterExtra.Type String tripType);
10691069
}

libnavigation-core/src/main/java/com/mapbox/navigation/core/trip/MapboxTripStarter.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,12 @@ class MapboxTripStarter internal constructor() : MapboxNavigationObserver {
169169

170170
companion object {
171171

172+
/**
173+
* Construct an instance without registering to [MapboxNavigationApp].
174+
*/
175+
@JvmStatic
176+
fun create() = MapboxTripStarter()
177+
172178
/**
173179
* Get the registered instance or create one and register it to [MapboxNavigationApp].
174180
*/
@@ -185,6 +191,6 @@ class MapboxTripStarter internal constructor() : MapboxNavigationObserver {
185191
@ExperimentalPreviewMapboxNavigationAPI
186192
fun MapboxTripStarter.update(
187193
function: (MapboxTripStarterOptions.Builder) -> MapboxTripStarterOptions.Builder
188-
) {
194+
): MapboxTripStarter = apply {
189195
setOptions(function.invoke(getOptions().toBuilder()).build())
190196
}

qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/RoadObjectsActivity.kt

Lines changed: 22 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.mapbox.maps.plugin.animation.CameraAnimationsPlugin
1515
import com.mapbox.maps.plugin.animation.MapAnimationOptions
1616
import com.mapbox.maps.plugin.animation.camera
1717
import com.mapbox.maps.plugin.locationcomponent.location
18+
import com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI
1819
import com.mapbox.navigation.base.formatter.DistanceFormatterOptions
1920
import com.mapbox.navigation.base.options.NavigationOptions
2021
import com.mapbox.navigation.base.trip.model.RouteProgress
@@ -25,15 +26,14 @@ import com.mapbox.navigation.base.trip.model.roadobject.reststop.RestStopType
2526
import com.mapbox.navigation.base.trip.model.roadobject.tollcollection.TollCollection
2627
import com.mapbox.navigation.base.trip.model.roadobject.tollcollection.TollCollectionType
2728
import com.mapbox.navigation.core.MapboxNavigation
28-
import com.mapbox.navigation.core.MapboxNavigationProvider
2929
import com.mapbox.navigation.core.directions.session.RoutesObserver
30-
import com.mapbox.navigation.core.replay.MapboxReplayer
31-
import com.mapbox.navigation.core.replay.ReplayLocationEngine
32-
import com.mapbox.navigation.core.replay.route.ReplayProgressObserver
3330
import com.mapbox.navigation.core.replay.route.ReplayRouteMapper
31+
import com.mapbox.navigation.core.trip.MapboxTripStarter
32+
import com.mapbox.navigation.core.trip.MapboxTripStarterExtra.MAPBOX_TRIP_STARTER_REPLAY_ROUTE
3433
import com.mapbox.navigation.core.trip.session.LocationMatcherResult
3534
import com.mapbox.navigation.core.trip.session.LocationObserver
3635
import com.mapbox.navigation.core.trip.session.RouteProgressObserver
36+
import com.mapbox.navigation.core.trip.update
3737
import com.mapbox.navigation.qa_test_app.R
3838
import com.mapbox.navigation.qa_test_app.databinding.LayoutActivityRestStopBinding
3939
import com.mapbox.navigation.qa_test_app.utils.Utils
@@ -57,8 +57,6 @@ class RoadObjectsActivity : AppCompatActivity() {
5757
private const val TAG = "RoadObjectsActivity"
5858
}
5959

60-
private val replayRouteMapper = ReplayRouteMapper()
61-
private val mapboxReplayer = MapboxReplayer()
6260
private val navigationLocationProvider = NavigationLocationProvider()
6361

6462
private val binding: LayoutActivityRestStopBinding by lazy {
@@ -74,14 +72,17 @@ class RoadObjectsActivity : AppCompatActivity() {
7472
}
7573

7674
private val mapboxNavigation: MapboxNavigation by lazy {
77-
MapboxNavigationProvider.create(
75+
MapboxNavigation(
7876
NavigationOptions.Builder(this)
7977
.accessToken(Utils.getMapboxSapaAccessToken(this))
80-
.locationEngine(ReplayLocationEngine(mapboxReplayer))
8178
.build()
8279
)
8380
}
8481

82+
@OptIn(ExperimentalPreviewMapboxNavigationAPI::class)
83+
private val mapboxTripStarter = MapboxTripStarter.create()
84+
.update { it.tripType(MAPBOX_TRIP_STARTER_REPLAY_ROUTE) }
85+
8586
private val mapCamera: CameraAnimationsPlugin by lazy {
8687
binding.mapView.camera
8788
}
@@ -121,6 +122,7 @@ class RoadObjectsActivity : AppCompatActivity() {
121122
super.onCreate(savedInstanceState)
122123
setContentView(binding.root)
123124
initNavigation()
125+
initReplayer()
124126
initStyle()
125127
initListeners()
126128
}
@@ -129,15 +131,15 @@ class RoadObjectsActivity : AppCompatActivity() {
129131
super.onStop()
130132
mapboxNavigation.unregisterRoutesObserver(routesObserver)
131133
mapboxNavigation.unregisterRouteProgressObserver(routeProgressObserver)
132-
mapboxNavigation.unregisterRouteProgressObserver(replayProgressObserver)
133134
mapboxNavigation.unregisterLocationObserver(locationObserver)
134135
}
135136

137+
@OptIn(ExperimentalPreviewMapboxNavigationAPI::class)
136138
override fun onDestroy() {
137139
super.onDestroy()
140+
mapboxTripStarter.onDetached(mapboxNavigation)
138141
routeLineApi.cancel()
139142
routeLineView.cancel()
140-
mapboxReplayer.finish()
141143
mapboxNavigation.onDestroy()
142144
}
143145

@@ -150,10 +152,6 @@ class RoadObjectsActivity : AppCompatActivity() {
150152
routeLineApi.setRoutes(listOf(RouteLine(route, null))) {
151153
routeLineView.renderRouteDrawData(style, it)
152154
}
153-
154-
val routeOrigin = Utils.getRouteOriginPoint(route)
155-
val cameraOptions = CameraOptions.Builder().center(routeOrigin).zoom(15.0).build()
156-
binding.mapView.getMapboxMap().setCamera(cameraOptions)
157155
}
158156
}
159157

@@ -163,12 +161,16 @@ class RoadObjectsActivity : AppCompatActivity() {
163161
enabled = true
164162
}
165163
mapboxNavigation.registerRoutesObserver(routesObserver)
166-
mapboxNavigation.setRoutes(listOf(getRoute()))
167164
mapboxNavigation.registerLocationObserver(locationObserver)
168-
mapboxNavigation.registerRouteProgressObserver(replayProgressObserver)
169-
mapboxReplayer.pushRealLocation(this, 0.0)
170-
mapboxReplayer.playbackSpeed(1.5)
171-
mapboxReplayer.play()
165+
}
166+
167+
@OptIn(ExperimentalPreviewMapboxNavigationAPI::class)
168+
private fun initReplayer() {
169+
mapboxTripStarter.onAttached(mapboxNavigation)
170+
val routeOrigin = Utils.getRouteOriginPoint(getRoute())
171+
mapboxNavigation.mapboxReplayer.pushEvents(
172+
listOf(ReplayRouteMapper.mapToUpdateLocation(0.0, routeOrigin))
173+
)
172174
}
173175

174176
private val locationObserver: LocationObserver = object : LocationObserver {
@@ -202,21 +204,11 @@ class RoadObjectsActivity : AppCompatActivity() {
202204
private fun initListeners() {
203205
binding.startNavigation.setOnClickListener {
204206
mapboxNavigation.registerRouteProgressObserver(routeProgressObserver)
205-
mapboxNavigation.startTripSession()
206207
binding.startNavigation.visibility = View.GONE
207-
startSimulation(mapboxNavigation.getRoutes()[0])
208+
mapboxNavigation.setRoutes(listOf(getRoute()))
208209
}
209210
}
210211

211-
private fun startSimulation(route: DirectionsRoute) {
212-
mapboxReplayer.stop()
213-
mapboxReplayer.clearEvents()
214-
val replayData = replayRouteMapper.mapDirectionsRouteGeometry(route)
215-
mapboxReplayer.pushEvents(replayData)
216-
mapboxReplayer.seekTo(replayData[0])
217-
mapboxReplayer.play()
218-
}
219-
220212
private val routesObserver = RoutesObserver {
221213
val builder = SpannableStringBuilder("The route has\n\n")
222214
val navigationRoute = it.navigationRoutes.first()
@@ -342,8 +334,6 @@ class RoadObjectsActivity : AppCompatActivity() {
342334
return getString(stringResource, formatter.format(distance))
343335
}
344336

345-
private val replayProgressObserver = ReplayProgressObserver(mapboxReplayer)
346-
347337
private fun getRoute(): DirectionsRoute {
348338
val routeAsString = Utils.readRawFileText(this, R.raw.route_with_sapa)
349339
return DirectionsRoute.fromJson(routeAsString)

0 commit comments

Comments
 (0)