diff --git a/app/src/main/java/eu/ztsh/garmin/ExampleActivity.kt b/app/src/main/java/eu/ztsh/garmin/ExampleActivity.kt deleted file mode 100644 index 91a77f4..0000000 --- a/app/src/main/java/eu/ztsh/garmin/ExampleActivity.kt +++ /dev/null @@ -1,692 +0,0 @@ -//package eu.ztsh.garmin -// -//import android.annotation.SuppressLint -//import android.content.res.Configuration -//import android.content.res.Resources -//import android.os.Bundle -//import android.view.View -//import android.widget.Toast -//import androidx.appcompat.app.AppCompatActivity -//import com.mapbox.api.directions.v5.models.Bearing -//import com.mapbox.api.directions.v5.models.DirectionsRoute -//import com.mapbox.api.directions.v5.models.RouteOptions -//import com.mapbox.bindgen.Expected -//import com.mapbox.common.location.Location -//import com.mapbox.geojson.Point -//import com.mapbox.maps.EdgeInsets -//import com.mapbox.maps.ImageHolder -//import com.mapbox.maps.plugin.LocationPuck2D -//import com.mapbox.maps.plugin.animation.camera -//import com.mapbox.maps.plugin.gestures.gestures -//import com.mapbox.maps.plugin.locationcomponent.location -//import com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI -//import com.mapbox.navigation.base.TimeFormat -//import com.mapbox.navigation.base.extensions.applyDefaultNavigationOptions -//import com.mapbox.navigation.base.extensions.applyLanguageAndVoiceUnitOptions -//import com.mapbox.navigation.base.formatter.DistanceFormatterOptions -//import com.mapbox.navigation.base.options.NavigationOptions -//import com.mapbox.navigation.base.route.NavigationRoute -//import com.mapbox.navigation.base.route.NavigationRouterCallback -//import com.mapbox.navigation.base.route.RouterFailure -//import com.mapbox.navigation.core.MapboxNavigation -//import com.mapbox.navigation.core.directions.session.RoutesObserver -//import com.mapbox.navigation.core.formatter.MapboxDistanceFormatter -//import com.mapbox.navigation.core.lifecycle.MapboxNavigationApp -//import com.mapbox.navigation.core.lifecycle.MapboxNavigationObserver -//import com.mapbox.navigation.core.lifecycle.requireMapboxNavigation -//import com.mapbox.navigation.core.replay.route.ReplayProgressObserver -//import com.mapbox.navigation.core.replay.route.ReplayRouteMapper -//import com.mapbox.navigation.core.trip.session.LocationMatcherResult -//import com.mapbox.navigation.core.trip.session.LocationObserver -//import com.mapbox.navigation.core.trip.session.RouteProgressObserver -//import com.mapbox.navigation.core.trip.session.VoiceInstructionsObserver -//import com.mapbox.navigation.tripdata.maneuver.api.MapboxManeuverApi -//import com.mapbox.navigation.tripdata.progress.api.MapboxTripProgressApi -//import com.mapbox.navigation.tripdata.progress.model.DistanceRemainingFormatter -//import com.mapbox.navigation.tripdata.progress.model.EstimatedTimeToArrivalFormatter -//import com.mapbox.navigation.tripdata.progress.model.PercentDistanceTraveledFormatter -//import com.mapbox.navigation.tripdata.progress.model.TimeRemainingFormatter -//import com.mapbox.navigation.tripdata.progress.model.TripProgressUpdateFormatter -//import com.mapbox.navigation.ui.base.util.MapboxNavigationConsumer -//import com.mapbox.navigation.ui.components.maneuver.view.MapboxManeuverView -//import com.mapbox.navigation.ui.components.tripprogress.view.MapboxTripProgressView -//import com.mapbox.navigation.ui.maps.NavigationStyles -//import com.mapbox.navigation.ui.maps.camera.NavigationCamera -//import com.mapbox.navigation.ui.maps.camera.data.MapboxNavigationViewportDataSource -//import com.mapbox.navigation.ui.maps.camera.lifecycle.NavigationBasicGesturesHandler -//import com.mapbox.navigation.ui.maps.camera.state.NavigationCameraState -//import com.mapbox.navigation.ui.maps.camera.transition.NavigationCameraTransitionOptions -//import com.mapbox.navigation.ui.maps.location.NavigationLocationProvider -//import com.mapbox.navigation.ui.maps.route.arrow.api.MapboxRouteArrowApi -//import com.mapbox.navigation.ui.maps.route.arrow.api.MapboxRouteArrowView -//import com.mapbox.navigation.ui.maps.route.arrow.model.RouteArrowOptions -//import com.mapbox.navigation.ui.maps.route.line.api.MapboxRouteLineApi -//import com.mapbox.navigation.ui.maps.route.line.api.MapboxRouteLineView -//import com.mapbox.navigation.ui.maps.route.line.model.MapboxRouteLineApiOptions -//import com.mapbox.navigation.ui.maps.route.line.model.MapboxRouteLineViewOptions -//import com.mapbox.navigation.voice.api.MapboxSpeechApi -//import com.mapbox.navigation.voice.api.MapboxVoiceInstructionsPlayer -//import com.mapbox.navigation.voice.model.SpeechAnnouncement -//import com.mapbox.navigation.voice.model.SpeechError -//import com.mapbox.navigation.voice.model.SpeechValue -//import com.mapbox.navigation.voice.model.SpeechVolume -//import eu.ztsh.garmin.databinding.ActivityMainBinding -//import java.util.Date -//import java.util.Locale -// -///** -// * This example demonstrates a basic turn-by-turn navigation experience by putting together some UI elements to showcase -// * navigation camera transitions, guidance instructions banners and playback, and progress along the route. -// * -// * Before running the example make sure you have put your access_token in the correct place -// * inside [app/src/main/res/values/mapbox_access_token.xml]. If not present then add this file -// * at the location mentioned above and add the following content to it -// * -// * -// * -// * -// * -// * -// * The example assumes that you have granted location permissions and does not enforce it. However, -// * the permission is essential for proper functioning of this example. The example also uses replay -// * location engine to facilitate navigation without actually physically moving. -// * -// * How to use this example: -// * - You can long-click the map to select a destination. -// * - The guidance will start to the selected destination while simulating location updates. -// * You can disable simulation by commenting out the [replayLocationEngine] setter in [NavigationOptions]. -// * Then, the device's real location will be used. -// * - At any point in time you can finish guidance or select a new destination. -// * - You can use buttons to mute/unmute voice instructions, recenter the camera, or show the route overview. -// */ -//@OptIn(ExperimentalPreviewMapboxNavigationAPI::class) -//class ExampleActivity { -// -// private companion object { -// private const val BUTTON_ANIMATION_DURATION = 1500L -// } -// -// /** -// * Debug observer that makes sure the replayer has always an up-to-date information to generate mock updates. -// */ -// private lateinit var replayProgressObserver: ReplayProgressObserver -// -// /** -// * Debug object that converts a route into events that can be replayed to navigate a route. -// */ -// private val replayRouteMapper = ReplayRouteMapper() -// -// /** -// * Bindings to the example layout. -// */ -// private lateinit var binding: ActivityMainBinding -// -// /** -// * Used to execute camera transitions based on the data generated by the [viewportDataSource]. -// * This includes transitions from route overview to route following and continuously updating the camera as the location changes. -// */ -// private lateinit var navigationCamera: NavigationCamera -// -// /** -// * Produces the camera frames based on the location and routing data for the [navigationCamera] to execute. -// */ -// private lateinit var viewportDataSource: MapboxNavigationViewportDataSource -// -// /* -// * Below are generated camera padding values to ensure that the route fits well on screen while -// * other elements are overlaid on top of the map (including instruction view, buttons, etc.) -// */ -// private val pixelDensity = Resources.getSystem().displayMetrics.density -// private val overviewPadding: EdgeInsets by lazy { -// EdgeInsets( -// 140.0 * pixelDensity, -// 40.0 * pixelDensity, -// 120.0 * pixelDensity, -// 40.0 * pixelDensity -// ) -// } -// private val landscapeOverviewPadding: EdgeInsets by lazy { -// EdgeInsets( -// 30.0 * pixelDensity, -// 380.0 * pixelDensity, -// 110.0 * pixelDensity, -// 20.0 * pixelDensity -// ) -// } -// private val followingPadding: EdgeInsets by lazy { -// EdgeInsets( -// 180.0 * pixelDensity, -// 40.0 * pixelDensity, -// 150.0 * pixelDensity, -// 40.0 * pixelDensity -// ) -// } -// private val landscapeFollowingPadding: EdgeInsets by lazy { -// EdgeInsets( -// 30.0 * pixelDensity, -// 380.0 * pixelDensity, -// 110.0 * pixelDensity, -// 40.0 * pixelDensity -// ) -// } -// -// /** -// * Generates updates for the [MapboxManeuverView] to display the upcoming maneuver instructions -// * and remaining distance to the maneuver point. -// */ -// private lateinit var maneuverApi: MapboxManeuverApi -// -// /** -// * Generates updates for the [MapboxTripProgressView] that include remaining time and distance to the destination. -// */ -// private lateinit var tripProgressApi: MapboxTripProgressApi -// -// /** -// * Generates updates for the [routeLineView] with the geometries and properties of the routes that should be drawn on the map. -// */ -// private lateinit var routeLineApi: MapboxRouteLineApi -// -// /** -// * Draws route lines on the map based on the data from the [routeLineApi] -// */ -// private lateinit var routeLineView: MapboxRouteLineView -// -// /** -// * Generates updates for the [routeArrowView] with the geometries and properties of maneuver arrows that should be drawn on the map. -// */ -// private val routeArrowApi: MapboxRouteArrowApi = MapboxRouteArrowApi() -// -// /** -// * Draws maneuver arrows on the map based on the data [routeArrowApi]. -// */ -// private lateinit var routeArrowView: MapboxRouteArrowView -// -// /** -// * Stores and updates the state of whether the voice instructions should be played as they come or muted. -// */ -// private var isVoiceInstructionsMuted = false -// set(value) { -// field = value -// if (value) { -// binding.soundButton.muteAndExtend(BUTTON_ANIMATION_DURATION) -// voiceInstructionsPlayer.volume(SpeechVolume(0f)) -// } else { -// binding.soundButton.unmuteAndExtend(BUTTON_ANIMATION_DURATION) -// voiceInstructionsPlayer.volume(SpeechVolume(1f)) -// } -// } -// -// /** -// * Extracts message that should be communicated to the driver about the upcoming maneuver. -// * When possible, downloads a synthesized audio file that can be played back to the driver. -// */ -// private lateinit var speechApi: MapboxSpeechApi -// -// /** -// * Plays the synthesized audio files with upcoming maneuver instructions -// * or uses an on-device Text-To-Speech engine to communicate the message to the driver. -// * NOTE: do not use lazy initialization for this class since it takes some time to initialize -// * the system services required for on-device speech synthesis. With lazy initialization -// * there is a high risk that said services will not be available when the first instruction -// * has to be played. [MapboxVoiceInstructionsPlayer] should be instantiated in -// * `Activity#onCreate`. -// */ -// private lateinit var voiceInstructionsPlayer: MapboxVoiceInstructionsPlayer -// -// /** -// * Observes when a new voice instruction should be played. -// */ -// private val voiceInstructionsObserver = VoiceInstructionsObserver { voiceInstructions -> -// speechApi.generate(voiceInstructions, speechCallback) -// } -// -// /** -// * Based on whether the synthesized audio file is available, the callback plays the file -// * or uses the fall back which is played back using the on-device Text-To-Speech engine. -// */ -// private val speechCallback = -// MapboxNavigationConsumer> { expected -> -// expected.fold( -// { error -> -// // play the instruction via fallback text-to-speech engine -// voiceInstructionsPlayer.play( -// error.fallback, -// voiceInstructionsPlayerCallback -// ) -// }, -// { value -> -// // play the sound file from the external generator -// voiceInstructionsPlayer.play( -// value.announcement, -// voiceInstructionsPlayerCallback -// ) -// } -// ) -// } -// -// /** -// * When a synthesized audio file was downloaded, this callback cleans up the disk after it was played. -// */ -// private val voiceInstructionsPlayerCallback = -// MapboxNavigationConsumer { value -> -// // remove already consumed file to free-up space -// speechApi.clean(value) -// } -// -// /** -// * [NavigationLocationProvider] is a utility class that helps to provide location updates generated by the Navigation SDK -// * to the Maps SDK in order to update the user location indicator on the map. -// */ -// private val navigationLocationProvider = NavigationLocationProvider() -// -// /** -// * Gets notified with location updates. -// * -// * Exposes raw updates coming directly from the location services -// * and the updates enhanced by the Navigation SDK (cleaned up and matched to the road). -// */ -// private val locationObserver = object : LocationObserver { -// var firstLocationUpdateReceived = false -// -// override fun onNewRawLocation(rawLocation: Location) { -// // not handled -// } -// -// override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { -// val enhancedLocation = locationMatcherResult.enhancedLocation -// // update location puck's position on the map -// navigationLocationProvider.changePosition( -// location = enhancedLocation, -// keyPoints = locationMatcherResult.keyPoints, -// ) -// -// // update camera position to account for new location -// viewportDataSource.onLocationChanged(enhancedLocation) -// viewportDataSource.evaluate() -// -// // if this is the first location update the activity has received, -// // it's best to immediately move the camera to the current user location -// if (!firstLocationUpdateReceived) { -// firstLocationUpdateReceived = true -// navigationCamera.requestNavigationCameraToOverview( -// stateTransitionOptions = NavigationCameraTransitionOptions.Builder() -// .maxDuration(0) // instant transition -// .build() -// ) -// } -// } -// } -// -// /** -// * Gets notified with progress along the currently active route. -// */ -// private val routeProgressObserver = RouteProgressObserver { routeProgress -> -// // update the camera position to account for the progressed fragment of the route -// viewportDataSource.onRouteProgressChanged(routeProgress) -// viewportDataSource.evaluate() -// -// // draw the upcoming maneuver arrow on the map -// val style = binding.mapView.mapboxMap.style -// if (style != null) { -// val maneuverArrowResult = routeArrowApi.addUpcomingManeuverArrow(routeProgress) -// routeArrowView.renderManeuverUpdate(style, maneuverArrowResult) -// } -// -// // update top banner with maneuver instructions -// val maneuvers = maneuverApi.getManeuvers(routeProgress) -// maneuvers.fold( -// { error -> -// Toast.makeText( -// this@ExampleActivity, -// error.errorMessage, -// Toast.LENGTH_SHORT -// ).show() -// }, -// { -// binding.maneuverView.visibility = View.VISIBLE -// binding.maneuverView.renderManeuvers(maneuvers) -// } -// ) -// -// // update bottom trip progress summary -// binding.tripProgressView.render( -// tripProgressApi.getTripProgress(routeProgress) -// ) -// } -// -// /** -// * Gets notified whenever the tracked routes change. -// * -// * A change can mean: -// * - routes get changed with [MapboxNavigation.setNavigationRoutes] -// * - routes annotations get refreshed (for example, congestion annotation that indicate the live traffic along the route) -// * - driver got off route and a reroute was executed -// */ -// private val routesObserver = RoutesObserver { routeUpdateResult -> -// if (routeUpdateResult.navigationRoutes.isNotEmpty()) { -// // generate route geometries asynchronously and render them -// routeLineApi.setNavigationRoutes( -// routeUpdateResult.navigationRoutes -// ) { value -> -// binding.mapView.mapboxMap.style?.apply { -// routeLineView.renderRouteDrawData(this, value) -// } -// } -// -// // update the camera position to account for the new route -// viewportDataSource.onRouteChanged(routeUpdateResult.navigationRoutes.first()) -// viewportDataSource.evaluate() -// } else { -// // remove the route line and route arrow from the map -// val style = binding.mapView.mapboxMap.style -// if (style != null) { -// routeLineApi.clearRouteLine { value -> -// routeLineView.renderClearRouteLineValue( -// style, -// value -// ) -// } -// routeArrowView.render(style, routeArrowApi.clearArrows()) -// } -// -// // remove the route reference from camera position evaluations -// viewportDataSource.clearRouteData() -// viewportDataSource.evaluate() -// } -// } -// -// private val mapboxNavigation: MapboxNavigation by requireMapboxNavigation( -// onResumedObserver = object : MapboxNavigationObserver { -// @SuppressLint("MissingPermission") -// override fun onAttached(mapboxNavigation: MapboxNavigation) { -// mapboxNavigation.registerRoutesObserver(routesObserver) -// mapboxNavigation.registerLocationObserver(locationObserver) -// mapboxNavigation.registerRouteProgressObserver(routeProgressObserver) -// mapboxNavigation.registerVoiceInstructionsObserver(voiceInstructionsObserver) -// -// replayProgressObserver = ReplayProgressObserver(mapboxNavigation.mapboxReplayer) -// mapboxNavigation.registerRouteProgressObserver(replayProgressObserver) -// -// // Start the trip session to being receiving location updates in free drive -// // and later when a route is set also receiving route progress updates. -// // In case of `startReplayTripSession`, -// // location events are emitted by the `MapboxReplayer` -// mapboxNavigation.startReplayTripSession() -// } -// -// override fun onDetached(mapboxNavigation: MapboxNavigation) { -// mapboxNavigation.unregisterRoutesObserver(routesObserver) -// mapboxNavigation.unregisterLocationObserver(locationObserver) -// mapboxNavigation.unregisterRouteProgressObserver(routeProgressObserver) -// mapboxNavigation.unregisterRouteProgressObserver(replayProgressObserver) -// mapboxNavigation.unregisterVoiceInstructionsObserver(voiceInstructionsObserver) -// mapboxNavigation.mapboxReplayer.finish() -// } -// }, -// onInitialize = this::initNavigation -// ) -// -// @SuppressLint("MissingPermission") -// override fun onCreate(savedInstanceState: Bundle?) { -// super.onCreate(savedInstanceState) -// binding = ActivityMainBinding.inflate(layoutInflater) -// setContentView(binding.root) -// -// // initialize Navigation Camera -// viewportDataSource = MapboxNavigationViewportDataSource(binding.mapView.mapboxMap) -// navigationCamera = NavigationCamera( -// binding.mapView.mapboxMap, -// binding.mapView.camera, -// viewportDataSource -// ) -// // set the animations lifecycle listener to ensure the NavigationCamera stops -// // automatically following the user location when the map is interacted with -// binding.mapView.camera.addCameraAnimationsLifecycleListener( -// NavigationBasicGesturesHandler(navigationCamera) -// ) -// navigationCamera.registerNavigationCameraStateChangeObserver { navigationCameraState -> -// // shows/hide the recenter button depending on the camera state -// when (navigationCameraState) { -// NavigationCameraState.TRANSITION_TO_FOLLOWING, -// NavigationCameraState.FOLLOWING -> binding.recenter.visibility = View.INVISIBLE -// NavigationCameraState.TRANSITION_TO_OVERVIEW, -// NavigationCameraState.OVERVIEW, -// NavigationCameraState.IDLE -> binding.recenter.visibility = View.VISIBLE -// } -// } -// // set the padding values depending on screen orientation and visible view layout -// if (this.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { -// viewportDataSource.overviewPadding = landscapeOverviewPadding -// } else { -// viewportDataSource.overviewPadding = overviewPadding -// } -// if (this.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { -// viewportDataSource.followingPadding = landscapeFollowingPadding -// } else { -// viewportDataSource.followingPadding = followingPadding -// } -// -// // make sure to use the same DistanceFormatterOptions across different features -// val distanceFormatterOptions = DistanceFormatterOptions.Builder(this).build() -// -// // initialize maneuver api that feeds the data to the top banner maneuver view -// maneuverApi = MapboxManeuverApi( -// MapboxDistanceFormatter(distanceFormatterOptions) -// ) -// -// // initialize bottom progress view -// tripProgressApi = MapboxTripProgressApi( -// TripProgressUpdateFormatter.Builder(this) -// .distanceRemainingFormatter( -// DistanceRemainingFormatter(distanceFormatterOptions) -// ) -// .timeRemainingFormatter( -// TimeRemainingFormatter(this) -// ) -// .percentRouteTraveledFormatter( -// PercentDistanceTraveledFormatter() -// ) -// .estimatedTimeToArrivalFormatter( -// EstimatedTimeToArrivalFormatter(this, TimeFormat.NONE_SPECIFIED) -// ) -// .build() -// ) -// -// // initialize voice instructions api and the voice instruction player -// speechApi = MapboxSpeechApi( -// this, -// Locale("pl").language -// ) -// voiceInstructionsPlayer = MapboxVoiceInstructionsPlayer( -// this, -// Locale("pl").language -// ) -// -// // initialize route line, the routeLineBelowLayerId is specified to place -// // the route line below road labels layer on the map -// // the value of this option will depend on the style that you are using -// // and under which layer the route line should be placed on the map layers stack -// val mapboxRouteLineViewOptions = MapboxRouteLineViewOptions.Builder(this) -// .routeLineBelowLayerId("road-label-navigation") -// .build() -// -// routeLineApi = MapboxRouteLineApi(MapboxRouteLineApiOptions.Builder().build()) -// routeLineView = MapboxRouteLineView(mapboxRouteLineViewOptions) -// -// // initialize maneuver arrow view to draw arrows on the map -// val routeArrowOptions = RouteArrowOptions.Builder(this).build() -// routeArrowView = MapboxRouteArrowView(routeArrowOptions) -// -// // load map style -// binding.mapView.mapboxMap.loadStyle(NavigationStyles.NAVIGATION_DAY_STYLE) { -// // Ensure that the route line related layers are present before the route arrow -// routeLineView.initializeLayers(it) -// -// // add long click listener that search for a route to the clicked destination -// binding.mapView.gestures.addOnMapLongClickListener { point -> -// findRoute(point) -// true -// } -// } -// -// // initialize view interactions -// binding.stop.setOnClickListener { -// clearRouteAndStopNavigation() -// } -// binding.recenter.setOnClickListener { -// navigationCamera.requestNavigationCameraToFollowing() -// binding.routeOverview.showTextAndExtend(BUTTON_ANIMATION_DURATION) -// } -// binding.routeOverview.setOnClickListener { -// navigationCamera.requestNavigationCameraToOverview() -// binding.recenter.showTextAndExtend(BUTTON_ANIMATION_DURATION) -// } -// binding.soundButton.setOnClickListener { -// // mute/unmute voice instructions -// isVoiceInstructionsMuted = !isVoiceInstructionsMuted -// } -// -// // set initial sounds button state -// binding.soundButton.unmute() -// } -// -// override fun onDestroy() { -// super.onDestroy() -// maneuverApi.cancel() -// routeLineApi.cancel() -// routeLineView.cancel() -// speechApi.cancel() -// voiceInstructionsPlayer.shutdown() -// } -// -// private fun initNavigation() { -// MapboxNavigationApp.setup( -// NavigationOptions.Builder(this) -// .build() -// ) -// -// // initialize location puck -// binding.mapView.location.apply { -// setLocationProvider(navigationLocationProvider) -// this.locationPuck = LocationPuck2D( -// bearingImage = ImageHolder.Companion.from( -// com.mapbox.navigation.ui.maps.R.drawable.mapbox_navigation_puck_icon -// ) -// ) -// puckBearingEnabled = true -// enabled = true -// } -// -// replayOriginLocation() -// } -// -// private fun replayOriginLocation() { -// with(mapboxNavigation.mapboxReplayer) { -// play() -// pushEvents( -// listOf( -// ReplayRouteMapper.mapToUpdateLocation( -// Date().time.toDouble(), -// Point.fromLngLat(-122.39726512303575, 37.785128345296805) -// ) -// ) -// ) -// playFirstLocation() -// } -// } -// -// private fun findRoute(destination: Point) { -// val originLocation = navigationLocationProvider.lastLocation ?: return -// val originPoint = Point.fromLngLat(originLocation.longitude, originLocation.latitude) -// -// // execute a route request -// // it's recommended to use the -// // applyDefaultNavigationOptions and applyLanguageAndVoiceUnitOptions -// // that make sure the route request is optimized -// // to allow for support of all of the Navigation SDK features -// mapboxNavigation.requestRoutes( -// RouteOptions.builder() -// .applyDefaultNavigationOptions() -// .applyLanguageAndVoiceUnitOptions(this) -// .coordinatesList(listOf(originPoint, destination)) -// .apply { -// // provide the bearing for the origin of the request to ensure -// // that the returned route faces in the direction of the current user movement -// originLocation.bearing?.let { bearing -> -// bearingsList( -// listOf( -// Bearing.builder() -// .angle(bearing) -// .degrees(45.0) -// .build(), -// null -// ) -// ) -// } -// } -// .layersList(listOf(mapboxNavigation.getZLevel(), null)) -// .build(), -// object : NavigationRouterCallback { -// override fun onCanceled(routeOptions: RouteOptions, routerOrigin: String) { -// // no impl -// } -// -// override fun onFailure(reasons: List, routeOptions: RouteOptions) { -// // no impl -// } -// -// override fun onRoutesReady( -// routes: List, -// routerOrigin: String -// ) { -// setRouteAndStartNavigation(routes) -// } -// } -// ) -// } -// -// private fun setRouteAndStartNavigation(routes: List) { -// // set routes, where the first route in the list is the primary route that -// // will be used for active guidance -// mapboxNavigation.setNavigationRoutes(routes) -// -// // show UI elements -// binding.soundButton.visibility = View.VISIBLE -// binding.routeOverview.visibility = View.VISIBLE -// binding.tripProgressCard.visibility = View.VISIBLE -// -// // move the camera to overview when new route is available -// navigationCamera.requestNavigationCameraToOverview() -// -// // start simulation -// startSimulation(routes.first().directionsRoute) -// } -// -// private fun clearRouteAndStopNavigation() { -// // clear -// mapboxNavigation.setNavigationRoutes(listOf()) -// -// // stop simulation -// stopSimulation() -// -// // hide UI elements -// binding.soundButton.visibility = View.INVISIBLE -// binding.maneuverView.visibility = View.INVISIBLE -// binding.routeOverview.visibility = View.INVISIBLE -// binding.tripProgressCard.visibility = View.INVISIBLE -// } -// -// private fun startSimulation(route: DirectionsRoute) { -// mapboxNavigation.mapboxReplayer.stop() -// mapboxNavigation.mapboxReplayer.clearEvents() -// val replayData = replayRouteMapper.mapDirectionsRouteGeometry(route) -// mapboxNavigation.mapboxReplayer.pushEvents(replayData) -// mapboxNavigation.mapboxReplayer.seekTo(replayData[0]) -// mapboxNavigation.mapboxReplayer.play() -// } -// -// private fun stopSimulation() { -// mapboxNavigation.mapboxReplayer.stop() -// mapboxNavigation.mapboxReplayer.clearEvents() -// } -//} \ No newline at end of file