Navigation SDK v3.9.0
Navigation SDK Core Framework 3.9.0 - 09 May, 2025
Features
- Support road cameras in free drive. Enable by calling
RoadCamerasManager.instance.isActiveInFreeDrive = trueand adjust display configMapboxRoadCamerasDisplayConfig.Builder().showInFreeDrive(true).build(). - Added experimental
NavigationPerformance#performanceInfoLoggingEnabledwhich allows applications to enable info level logging of performance information. - Added experimental
MapboxNavigation#switchToAlternativeRoutethat support switching between alternative routes with different amount of waypoints. - Add
DriverNotification,DriverNotificationProviderinterfaces withEvBetterRouteNotificationProviderandSlowTrafficNotificationProviderimplementations. Add newDriverNotificationManagerAPI to attach or detach providers andDriverNotificationManager.observeDriverNotification()to handle the flow of driver notifications - Added utility class
GeoUtilswhich provide functionality to calculate unique identifier for provided link (part of a road between two intersection). - Added
EHorizonOptions#enableEnhancedDataAlongEHflag to control access to enhanced data attributes (from ADAS data layer). - Added a new function
MapboxRouteShieldApi#getRoadComponentsShieldswhich accepts a list ofRoadComponent. - Added support for
exclude_operatorsparameter in EV search. - Clear caches when device memory is low.
- Added helpPhone field to EV Location class.
⚠️ Breaking changes in Experimental API.AdasSpeedLimitRestriction.VehicleTypehas been moved tocom.mapbox.navigation.base.model.VehicleType.⚠️ Breaking changes in Experimental API: MapboxRouteCalloutApi and MapboxRouteCalloutView are no longer publicly available.- New option MapboxRouteLineApiOptions#isRouteCalloutsEnabled to allow MapboxRouteLineApi calculate data for route callouts.
- New function MapboxRouteLineView#enableCallouts now allows to render route callouts on the map by setting an adapter.
- Added DefaultRouteCalloutAdapter which provides a built-in adapter for route callouts.
- Add
MapboxRoadCamera::inOnRouteflag which indicates if the roiad camera is on the current route. - Add
MapboxRoadCamerasDisplayConfig::showOnlyOnRouteconfig parameter to display only road cameras on the route. - Added support for EV charge point tariffs accessible via
EvStation.tariffs. - New experimental property
LocationMatcherResult.correctedLocationDatais available. - New experimental function
GraphAccessor.getAdasisEdgeAttributes()is available. It returns ADAS attributes for the requested edge. - Expose road type in the
MapboxRoadCamera - Added support for section control speed cameras.
- Extended
MapboxTripProgressApito provide information about time zone at leg/route destination. - Added
TripProgressUpdateFormatter.getEstimatedTimeToArrivaloverload that formats ETA using a given time zone. - Added curvatures support on intersections in ADAS tiles
- Reduced amount of error logs
- Added periodic logs of Navigator/Cache configs
- Added support for wheel speed usage during no signal simulation to determine passed distance for mobile profile
- Improved off road transitions
⚠️ Breaking changes in Experimental APIMapboxRouteCalloutView#renderCallouts(RouteCalloutData,MapboxRouteLineView). It's required to associate Route line with Callout View.- Added experimental
SearchAlongRouteUtilsclass to optimize search along routes scenario by providing optimally selected points. - Added experimental
RoutingTilesOptions#hdTilesOptionsto configure HD tiles endpoint. DataInputsManagernow can be used from any thread.- Added experimental Road Cameras modules to provide notifications about road cameras along the route and show them on the map.
- Added option to display the route line with a blur effect.
- Added experimental functions
MapboxNavigation#startTripSessionWithPermissionCheck()andMapboxNavigation#startReplayTripSessionWithPermissionCheckthat immediately throwIllegalStateExceptionif they are called withwithForegroundServiceparameter set to true, but Android foreground service permissions requirements are not met. - Added support for SVG junction views, see
MapboxJunctionApi#generateJunction(instructions: BannerInstructions, @JunctionViewFormat format: String, consumer: MapboxNavigationConsumer<Expected<JunctionError, JunctionViewData>>). - Added experimental
NavigationRoute#routeRefreshMetadatawhich contains data related to refresh of the route object. - Signature of experimental
EtcGateApi#updateEtcGateInfofunction has been changed, now it acceptsEtcGateApi.EtcGateInfoas a function parameter. - Experimental Data Inputs functionality has been removed from the
coremodule to a separatedatainputsmodule (MapboxNavigation#dataInputsand everything from the packagecom.mapbox.navigation.datainputshave been removed). Contact us to get more information on how to get access to the module. - Experimental Adasis functionality has been removed from the
coremodule (MapboxNavigation's functionssetAdasisMessageObserver,resetAdasisMessageObserver,updateExternalSensorData, andGraphAccessor#getAdasisEdgeAttributeshave been removed). Contact us in case you're interested in ADASIS functionality. - Added experimental
RoutingTilesOptions#fallbackNavigationTilesVersionwhich lets define version of navigation tiles to fallback in case of offline routing failure with navigation tiles defined inRoutingTilesOptions#tilesVersion. - Added experimental
MapboxRouteLineViewOptions#fadeOnHighZoomsConfigandMapboxRouteArrowOptions#fadeOnHighZoomsConfigto configure smooth fading out of route line or/and arrows on high zoom levels. - The
PredictiveCacheController(PredictiveCacheOptions)constructor is now deprecated. UsePredictiveCacheController(MapboxNavigation, PredictiveCacheOptions)instead. - Added
NavigationScaleGestureHandlerOptions#followingRotationAngleThresholdthat define threshold angle for rotation forFOLLOWINGNavigation Camera state. - Added the ability to filter road names based on the system language
com.mapbox.navigation.base.road.model.RoadComponentobjects that contain only slashes in their text are filtered out- Now
EHorizonResultType.Typehas a new element calledEHorizonResultType.NOT_AVAILABLE. - Old
MapboxNavigation.postUserFeedback()functions have been deprecated, use an overloading that acceptsUserFeedbackas a parameter. - Introduce MapboxRouteCalloutApi and MapboxRouteCalloutView to attach callouts to route lines with info about duration
- Optimized memory usage in Directions API model classes by interning frequently occurring strings in JSON.
- Added experimental
MapboxNavigation#replanRouteto handle cases when user changes route options during active guidance,
for example enabling avoid ferries. - Added
DataInputsManagerto allow the provision of data from external sensors to the navigator, seeMapboxNavigation.dataInputsManager. ExperimentalEtcGateInfohas been moved tocom.mapbox.navigation.core.datainputspackage.EtcGateApihas been deprecated. - Removing the ExperimentalMapboxNavigationAPI flag for Search predictive cache.
- [BREAKING CHANGE]
PredictiveCacheOptions.unrecognizedTilesetDescriptorOptionshas been renamed toPredictiveCacheOptions.predictiveCacheSearchOptionsList. Additionally,PredictiveCacheUnrecognizedTilesetDescriptorOptionshas been renamed toPredictiveCacheSearchOptions. Now, only search-related options can be passed toPredictiveCacheSearchOptions. - Introduced experimental traffic adjustment mechanism during a drive and added
TrafficOverrideOptionsto control this feature - Changed
Alternativesthat deviate close to a destination point are removed before a fork is reached. - Added
RerouteStrategyForMapMatchedRoutestoRerouteOptions. Reroute optionenableLegacyBehaviorForMapMatchedRoutewas removed, useNavigateToFinalDestinationstrategy instead.
Bug fixes and improvements
- Road Cameras that are no longer relevant for navigation will be removed from all the components to clean up resources.
- Improved EV bounding box search to maximize charging station coverage within the selected area.
- Added support for filter operators with spaces in EV Search.
- Fixed crash on invalid EV time parsing
- Allow to search charging stations in large areas.
- Added filter for zero-powered charging stations on EV layer
- Fixed an issue where the location indicator might have teleported back to tunnel after exiting it.
- Fixed an issue where overriding camera pitch to 0 caused the camera to go into "maneuver framing" mode.
- Improved EV charging station search along the route to provide more evenly distributed results.
- Processing of road cameras on location update has been moved from the main to the background thread
- Removed usages of APIs that prevented Copilot from working on devices with Android 7 or older.
- Optimized road cameras processing logic to reduce ANRs.
- Improved charging stations selection when doing EV search in bounding box.
- Fixed jumps in location updates reported by
com.mapbox.navigation.core.trip.session.LocationObserver.
The jumps started to happen after navigation tiles version switch reported inNavigationVersionSwitchObserver. - Fixed an issue with not working EV requests on a systems without Google Play Services.
- Optimize road cameras calculation in route preview mode
- Fixed incorrect events from RoadCameras Callback interface.
- Fixed an alternative Callout point to primary route.
- Improved
MapboxNavigationViewportDataSource#evaluateperformance. - Added automatic pause/resume of all direction calls when a navigation session stops/starts.
- Fixed a crash that happened on foreground service start on Android APIs 28 and below.
- Deprecated EstimatedTimeToArrivalFormatter and introduced EstimatedTimeOfArrivalFormatter, which allows to format ETA with respect to destination time zone.
- Deprecated TripProgressUpdateFormatter.estimatedTimeToArrivalFormatter and introduced TripProgressUpdateFormatter.estimatedTimeOfArrivalFormatter, which allows to format ETA with respect to destination time zone.
- Fixed
MapboxNavigationSDKInitializerImpllogic so thatuxfKeyis properly retrieved and sent over. - Fixed the condition for verifying the last good signal state in the offroad detection logic
- Fixed incorrect calculation of a "missing part" of the route causing all lanes to be mark as divergent
- Fixed EHorizon rural road objects sometimes marked as urban
- Fixed a bug that happened during reroute in case if initial route was requested with
approachesoption specified. - Improved reroute and alternative routes behavior
- Fixed map matching bug after leaving a tunnel
- Increased route stickiness in dead reckoning mode
- Added ability to send raw unfused GNSS location in addition to fused one
- Improved odometry and road graph fusing in urban canyons
- Signature of experimental
RawGnssSatelliteDatahas been changed, now it requiresresidualas a constructor parameter - Experimental
RawGnssLocationtype has been removed, nowRawGnssDatarequiresDilutionOfPrecisionas a parameter - Now service type is specified explicitly when foreground location service starts.
- Nav SDK now removes passed alternative routes as soon as user passed fork point.
- Fixed a potential route line layers visibility race, which might have happened if you invoked
MapboxRouteLineView#showPrimaryRouteandMapboxRouteLineView#renderRouteDrawDataapproximately at the same time. - Optimized CA routes handling by skiping route parsing if it's already exist in direction session
- Fixed
CarSearchLocationProviderproduces NullPointerException when using Mapbox Search SDK. - Fixed an issue preventing Copilot from correctly recording history events.
- Improved reroute and alternative routes behavior
- Fixed a bug causing some history files recorded during the previous app sessions not to be uploaded by the Copilot.
- Fixed an issue where native memory was not being properly released after the
MapboxNavigationobject was destroyed. - Fixed the issue of unwanted rerouting occurring immediately after setting a new route
- Fixed a crash caused by an overflow in the JNI global reference table.
- Fixed an issue with vignettes in Romania and Bulgaria for offline routing when tolls are excluded.
- Addressed several issues that occurred when switching to an alternative route.
- Implementation of
RerouteController#registerRerouteStateObservernow invokes observer immediately with current state instead of posting invocation to the main looper. - Fixed UI jank caused by on-device TextToSpeech player.
- Removed
PredictiveCacheController#removeSearchControllersandPredictiveCacheController#createSearchControllers. Now search predictive cache controller is created and destroyed together withPredictiveCacheControllerinstance ifPredictiveCacheOptions.predictiveCacheSearchOptionsListis provided. - Improve performance when handling large road objects on the eHorizon's MPP.
- Fixed
Routesthat origin is out of primary route cannot be added as alternatives. - Fixed a crash due to incorrect OpenLR input data
- Fixed a bug with spinning smoothed coordinate
- Fixed issue for calculating the trim-offset value for the vanishing route line feature when the current geometry index emitted by route progress is greater than the value expected.
Mapbox dependencies
This release depends on, and has been tested with, the following Mapbox dependencies:
- Mapbox Maps SDK
v11.12.0(release notes) - Mapbox Navigation Native
v324.12.0 - Mapbox Core Common
v24.12.0 - Mapbox Java
v7.4.0(release notes)