@@ -35,10 +35,14 @@ import com.mapbox.navigation.base.route.RouterOrigin
3535import com.mapbox.navigation.base.trip.model.RouteLegProgress
3636import com.mapbox.navigation.base.trip.model.RouteProgress
3737import com.mapbox.navigation.core.arrival.ArrivalObserver
38+ import com.mapbox.navigation.core.directions.session.RoutesObserver
3839import com.mapbox.navigation.core.lifecycle.MapboxNavigationApp
40+ import com.mapbox.navigation.core.trip.session.BannerInstructionsObserver
3941import com.mapbox.navigation.core.trip.session.LocationMatcherResult
4042import com.mapbox.navigation.core.trip.session.LocationObserver
43+ import com.mapbox.navigation.core.trip.session.OffRouteObserver
4144import com.mapbox.navigation.core.trip.session.RouteProgressObserver
45+ import com.mapbox.navigation.core.trip.session.VoiceInstructionsObserver
4246import com.mapbox.navigation.dropin.map.MapViewObserver
4347import com.mapbox.navigation.dropin.navigationview.NavigationViewListener
4448import com.mapbox.navigation.utils.internal.ifNonNull
@@ -106,9 +110,14 @@ class NavigationActivity : AppCompatActivity() {
106110 CustomInfoPanelEndNavButtonBinder (act)
107111 }
108112
113+ MapboxNavigationApp .current()?.registerBannerInstructionsObserver(this .bannerInstructionObserver)
114+ MapboxNavigationApp .current()?.registerVoiceInstructionsObserver(this .voiceInstructionObserver)
115+ MapboxNavigationApp .current()?.registerOffRouteObserver(this .offRouteObserver)
116+ MapboxNavigationApp .current()?.registerRoutesObserver(this .routesObserver)
109117 MapboxNavigationApp .current()?.registerLocationObserver(locationObserver)
110118 MapboxNavigationApp .current()?.registerRouteProgressObserver(routeProgressObserver)
111119 MapboxNavigationApp .current()?.registerArrivalObserver(arrivalObserver)
120+
112121 finishBroadcastReceiver = object : BroadcastReceiver () {
113122 override fun onReceive (context : Context , intent : Intent ) {
114123 finish()
@@ -174,6 +183,11 @@ class NavigationActivity : AppCompatActivity() {
174183 binding.navigationView.unregisterMapObserver(onMapLongClick)
175184 }
176185 binding.navigationView.removeListener(navigationStateListener)
186+
187+ MapboxNavigationApp .current()?.unregisterBannerInstructionsObserver(this .bannerInstructionObserver)
188+ MapboxNavigationApp .current()?.unregisterVoiceInstructionsObserver(this .voiceInstructionObserver)
189+ MapboxNavigationApp .current()?.unregisterOffRouteObserver(this .offRouteObserver)
190+ MapboxNavigationApp .current()?.unregisterRoutesObserver(this .routesObserver)
177191 MapboxNavigationApp .current()?.unregisterLocationObserver(locationObserver)
178192 MapboxNavigationApp .current()?.unregisterRouteProgressObserver(routeProgressObserver)
179193 MapboxNavigationApp .current()?.unregisterArrivalObserver(arrivalObserver)
@@ -198,6 +212,9 @@ class NavigationActivity : AppCompatActivity() {
198212 .waypointNamesList(waypointSet.waypointsNames())
199213 .language(FlutterMapboxNavigationPlugin .navigationLanguage)
200214 .alternatives(FlutterMapboxNavigationPlugin .showAlternateRoutes)
215+ .voiceUnits(FlutterMapboxNavigationPlugin .navigationVoiceUnits)
216+ .bannerInstructions(FlutterMapboxNavigationPlugin .bannerInstructionsEnabled)
217+ .voiceInstructions(FlutterMapboxNavigationPlugin .voiceInstructionsEnabled)
201218 .steps(true )
202219 .build(),
203220 callback = object : NavigationRouterCallback {
@@ -366,6 +383,26 @@ class NavigationActivity : AppCompatActivity() {
366383 }
367384 }
368385
386+ private val bannerInstructionObserver = BannerInstructionsObserver { bannerInstructions ->
387+ sendEvent(MapBoxEvents .BANNER_INSTRUCTION , bannerInstructions.primary().text())
388+ }
389+
390+ private val voiceInstructionObserver = VoiceInstructionsObserver { voiceInstructions ->
391+ sendEvent(MapBoxEvents .SPEECH_ANNOUNCEMENT , voiceInstructions.announcement().toString())
392+ }
393+
394+ private val offRouteObserver = OffRouteObserver { offRoute ->
395+ if (offRoute) {
396+ sendEvent(MapBoxEvents .USER_OFF_ROUTE )
397+ }
398+ }
399+
400+ private val routesObserver = RoutesObserver { routeUpdateResult ->
401+ if (routeUpdateResult.navigationRoutes.isNotEmpty()) {
402+ sendEvent(MapBoxEvents .REROUTE_ALONG );
403+ }
404+ }
405+
369406 /* *
370407 * Notifies with attach and detach events on [MapView]
371408 */
0 commit comments