|
1 | 1 | # Changelog for the Mapbox Navigation SDK Core Framework for Android |
2 | 2 |
|
| 3 | +## Navigation SDK Core Framework 3.16.0 - 23 October, 2025 |
| 4 | +#### Features |
| 5 | + |
| 6 | +- Added `MapMatchingOptions.voiceUnits` which allows applications to specify the unit system used for voice instructions in Map Matching. |
| 7 | +- Delay the start of the predictive cache when tiles are requested #6684 |
| 8 | +- Added `AdasEdgeAttributes#isBuiltUpArea` and `AdasEdgeAttributes#roadItems` properties. |
| 9 | +- Added a new `RoadObjectMatcherOptions` class that configures the road object matching behavior. Available through the `NavigationOptions` class. |
| 10 | +- Added `RouteCalloutUiStateProvider` class that allows to listen to Route Callout UI data. |
| 11 | +Normally, route callouts are drawn under the hood in NavSDK when this feature is enabled in `MapboxRouteLineApiOptions`. |
| 12 | +However, there might be cases when app wants to only get the callout data from NavSDK and attach the DVA itself. |
| 13 | +An example of such a case is using Mapbox Maps SDK Compose extensions: attaching a DVA for |
| 14 | +Compose MapboxMap is done via [compose-specific API](https://docs.mapbox.com/android/maps/examples/compose/dynamic-view-annotations/), |
| 15 | +which is not currently supported by NavSDK. |
| 16 | +In this case you may listen to `RouteCalloutUiStateData` updates via `RouteCalloutUiStateProvider` and use its information by attach a DVA. |
| 17 | +- Added experimental overloads for `MapboxManeuverApi#getRoadShields` and `MapboxRouteShieldApi#getRouteShields` that accept a `ShieldFontConfig` parameter, enabling custom font selection for route shields. |
| 18 | +- Added experimental `MapboxNavigationSVGExternalFileResolver` that can resolve fonts for SVG rendering from assets or use system fonts. |
| 19 | +- Updated `MapboxNavigation.replanRoute()` to now accept a new optional parameter of type `ReplanRoutesCallback`. |
| 20 | +- Added ability to filter by data source in EV charging station search operations. |
| 21 | +- Added `MapboxSpeedZoneInfo` class to represent speed zone information. Available through `UpcomingCamerasObserver::onSpeedZoneInfo` and `RoadCamerasMapCallback::onSpeedZoneInfo` callbacks. |
| 22 | +- Added experimental support for ADAS tiles in the predictive cache. See `PredictiveCacheNavigationOptions` for more information. |
| 23 | +- Added support for Android 16 KB page-size devices. To consume SDK compatible with NDK 27 you need to add `-ndk27` suffix to the artifact name, for example, `com.mapbox.navigationcore:navigation` -> `com.mapbox.navigationcore:navigation-ndk27`. |
| 24 | +- Added method overload `TilesetDescriptorFactory#getLatest(Boolean)` that allows to specify whether to include ADAS tiles. |
| 25 | +- Extracted TTS functionality into a new module `audio`. |
| 26 | +- DR improvements - more robust models for GNSS trust, road calibration, and wheel speed trust; |
| 27 | +- Improve main thread utilization by removing unintended locks (visible on systems with overloaded CPU) |
| 28 | +- Disable the defaults for collection of tunnel/bridge subgraphs in free drive. The clients will need to specify explicitly which objects to collect via AlertServiceOptions in the public SDK interface. |
| 29 | +- Added support of immediate update of location puck bearing in [NavigationLocationProvider] in case of overlapping key points. |
| 30 | +- `RoadCamerasManager` in active guidance now relies on new `road_camera` Directions API annotation, which improves the performance of the camera data retrieval and quality of the data. |
| 31 | +- Added `MapboxRoadCamera::activeGuidanceInfo`, containing information about the route id, leg index, geometry index and step intersection of the camera in active guidance. |
| 32 | +- ⚠️ Breaking changes in Experimental API. `MapboxEvSearchClientFactory.#getInstance()` no longer accepts access token as a parameter. The default `MapboxOptions.accessToken` will be used. |
| 33 | +- `CarPlaceSearchOptions.accessToken` and corresponding builder function has been deprecated because `accessToken` is no longer in use as the search component now uses the default `MapboxOptions.accessToken`. |
| 34 | +- Used legacy/custom date primitives in EV modules to support older Android API levels. |
| 35 | +- Added `DriverNotification`, `DriverNotificationProvider` interfaces with `EvBetterRouteNotificationProvider` and `SlowTrafficNotificationProvider` implementations. Add new `DriverNotificationManager` API to attach or detach providers and `DriverNotificationManager.observeDriverNotification()` to handle the flow of driver notifications. |
| 36 | +- Added default location providers. |
| 37 | +- Added `EvBusyChargingStationNotificationProvider` to notify when the EV is charging station is busy and propose alternative route. |
| 38 | +- Added experimental `NavigationPerformance#performanceTracingEnabled` which enables/disables internal performance trace sections. |
| 39 | +- Add `MapboxRoadCamera::inOnRoute` flag which indicates if the roiad camera is on the current route. |
| 40 | +- Add `MapboxRoadCamerasDisplayConfig::showOnlyOnRoute` config parameter to display only road cameras on the route. |
| 41 | +- Added support for EV charge point tariffs accessible via `EvStation.tariffs`. |
| 42 | +- New experimental property `LocationMatcherResult.correctedLocationData` is available. |
| 43 | +- New experimental function `GraphAccessor.getAdasisEdgeAttributes()` is available. It returns ADAS attributes for the requested edge. |
| 44 | +- Expose road type in the `MapboxRoadCamera` |
| 45 | +- Added support for section control speed cameras. |
| 46 | +- Extended `MapboxTripProgressApi` to provide information about time zone at leg/route destination. |
| 47 | +- Added `TripProgressUpdateFormatter.getEstimatedTimeToArrival` overload that formats ETA using a given time zone. |
| 48 | +- Added curvatures support on intersections in ADAS tiles |
| 49 | +- Reduced amount of error logs |
| 50 | +- Added periodic logs of Navigator/Cache configs |
| 51 | +- Added support for wheel speed usage during no signal simulation to determine passed distance for mobile profile |
| 52 | +- Improved off road transitions |
| 53 | +- :warning: Breaking changes in Experimental API `MapboxRouteCalloutView#renderCallouts(RouteCalloutData,MapboxRouteLineView)`. It's required to associate Route line with Callout View. |
| 54 | +- Added experimental `SearchAlongRouteUtils` class to optimize search along routes scenario by providing optimally selected points. |
| 55 | +- Added experimental `RoutingTilesOptions#hdTilesOptions` to configure HD tiles endpoint. |
| 56 | +- `DataInputsManager` now can be used from any thread. |
| 57 | +- Added experimental Road Cameras modules to provide notifications about road cameras along the route and show them on the map. |
| 58 | +- Added option to display the route line with a blur effect. |
| 59 | +- Added experimental functions `MapboxNavigation#startTripSessionWithPermissionCheck()` and `MapboxNavigation#startReplayTripSessionWithPermissionCheck` that immediately throw `IllegalStateException` if they are called with `withForegroundService` parameter set to true, but Android foreground service permissions requirements are not met. |
| 60 | +- Added support for SVG junction views, see `MapboxJunctionApi#generateJunction(instructions: BannerInstructions, @JunctionViewFormat format: String, consumer: MapboxNavigationConsumer<Expected<JunctionError, JunctionViewData>>)`. [#6803](https://github.com/mapbox/mapbox-navigation-android/pull/6803) |
| 61 | +- Added experimental `NavigationRoute#routeRefreshMetadata` which contains data related to refresh of the route object. [#6736](https://github.com/mapbox/mapbox-navigation-android/pull/6736) |
| 62 | +- Signature of experimental `EtcGateApi#updateEtcGateInfo` function has been changed, now it accepts `EtcGateApi.EtcGateInfo` as a function parameter. [#6508](https://github.com/mapbox/mapbox-navigation-android/pull/6508) |
| 63 | +- Experimental Data Inputs functionality has been removed from the `core` module to a separate `datainputs` module (`MapboxNavigation#dataInputs` and everything from the package `com.mapbox.navigation.datainputs` have been removed). [Contact us](https://www.mapbox.com/support) to get more information on how to get access to the module. [#6508](https://github.com/mapbox/mapbox-navigation-android/pull/6508) |
| 64 | +- Experimental Adasis functionality has been removed from the `core` module (`MapboxNavigation`'s functions `setAdasisMessageObserver`, `resetAdasisMessageObserver`, `updateExternalSensorData`, and `GraphAccessor#getAdasisEdgeAttributes` have been removed). [Contact us](https://www.mapbox.com/support) in case you're interested in ADASIS functionality. [#6508](https://github.com/mapbox/mapbox-navigation-android/pull/6508) |
| 65 | +- Added experimental `RoutingTilesOptions#fallbackNavigationTilesVersion` which lets define version of navigation tiles to fallback in case of offline routing failure with navigation tiles defined in `RoutingTilesOptions#tilesVersion`. [#6475](https://github.com/mapbox/mapbox-navigation-android/pull/6475) |
| 66 | +- Added experimental `MapboxRouteLineViewOptions#fadeOnHighZoomsConfig` and `MapboxRouteArrowOptions#fadeOnHighZoomsConfig` to configure smooth fading out of route line or/and arrows on high zoom levels. [#6367](https://github.com/mapbox/mapbox-navigation-android/pull/6367) |
| 67 | +- The `PredictiveCacheController(PredictiveCacheOptions)` constructor is now deprecated. Use `PredictiveCacheController(MapboxNavigation, PredictiveCacheOptions)` instead. [#6376](https://github.com/mapbox/mapbox-navigation-android/pull/6376) |
| 68 | +- Added `NavigationScaleGestureHandlerOptions#followingRotationAngleThreshold` that define threshold angle for rotation for `FOLLOWING` Navigation Camera state. [#6234](https://github.com/mapbox/mapbox-navigation-android/pull/6234) |
| 69 | +- Added the ability to filter road names based on the system language [#6163](https://github.com/mapbox/mapbox-navigation-android/pull/6163) |
| 70 | +- `com.mapbox.navigation.base.road.model.RoadComponent` objects that contain only slashes in their text are filtered out [#6163](https://github.com/mapbox/mapbox-navigation-android/pull/6163) |
| 71 | +- Now `EHorizonResultType.Type` has a new element called `EHorizonResultType.NOT_AVAILABLE`. [#6290](https://github.com/mapbox/mapbox-navigation-android/pull/6290) |
| 72 | +- Old `MapboxNavigation.postUserFeedback()` functions have been deprecated, use an overloading that accepts `UserFeedback` as a parameter. [#5781](https://github.com/mapbox/mapbox-navigation-android/pull/5781) |
| 73 | +- Introduce MapboxRouteCalloutApi and MapboxRouteCalloutView to attach callouts to route lines with info about duration [#2743](https://github.com/mapbox/mapbox-navigation-android/pull/2743) |
| 74 | +- Optimized memory usage in Directions API model classes by interning frequently occurring strings in JSON. [#5854](https://github.com/mapbox/mapbox-navigation-android/pull/5854) |
| 75 | +- Added experimental `MapboxNavigation#replanRoute` to handle cases when user changes route options during active guidance, [#5286](https://github.com/mapbox/mapbox-navigation-android/pull/5286) |
| 76 | +for example enabling avoid ferries. |
| 77 | +- Added `DataInputsManager` to allow the provision of data from external sensors to the navigator, see `MapboxNavigation.dataInputsManager`. Experimental `EtcGateInfo` has been moved to `com.mapbox.navigation.core.datainputs` package. `EtcGateApi` has been deprecated. [#5957](https://github.com/mapbox/mapbox-navigation-android/pull/5957) |
| 78 | +- Removing the ExperimentalMapboxNavigationAPI flag for Search predictive cache. [#5615](https://github.com/mapbox/mapbox-navigation-android/pull/5615) |
| 79 | +- [BREAKING CHANGE] `PredictiveCacheOptions.unrecognizedTilesetDescriptorOptions` has been renamed to `PredictiveCacheOptions.predictiveCacheSearchOptionsList`. Additionally, `PredictiveCacheUnrecognizedTilesetDescriptorOptions` has been renamed to `PredictiveCacheSearchOptions`. Now, only search-related options can be passed to `PredictiveCacheSearchOptions`. [#5244](https://github.com/mapbox/mapbox-navigation-android/pull/5244) |
| 80 | +- Introduced experimental traffic adjustment mechanism during a drive and added `TrafficOverrideOptions` to control this feature [#2811](https://github.com/mapbox/mapbox-navigation-android/pull/2811) |
| 81 | +- Changed `Alternatives` that deviate close to a destination point are removed before a fork is reached. [#5848](https://github.com/mapbox/mapbox-navigation-android/pull/5848) |
| 82 | +- Added `RerouteStrategyForMapMatchedRoutes` to `RerouteOptions`. Reroute option `enableLegacyBehaviorForMapMatchedRoute` was removed, use `NavigateToFinalDestination` strategy instead. [#5256](https://github.com/mapbox/mapbox-navigation-android/pull/5256) |
| 83 | + |
| 84 | +#### Bug fixes and improvements |
| 85 | + |
| 86 | +- Fixed Android Auto build for the NDK 27 compatible variant |
| 87 | +- Fix the bug that causes road cameras on alternative routes to not be removed from the road when its road is not active or passed during active guidance. |
| 88 | +- Fix ADAS tiles loading for ambient cache without consumer #7128 |
| 89 | +- Improved Visual Turn Experience in Active Guidance and Free-Drive for High-Frequency Input #3863 |
| 90 | +- The crash happens on route parsing with the steps=false #6889 |
| 91 | +- Support settings for per-level routing tiles compression #6622 |
| 92 | +#### Known issues :warning: |
| 93 | +- Fix the bug that causes road cameras on alternative routes to be marked as passed but not removed from the map. |
| 94 | +- Fixed the incorrect order of callbacks when notifying about road cameras on the route. |
| 95 | +- Optimize the `MapboxRouteArrowView` to skip re-rendering arrows that have not changed. |
| 96 | +- Decrased excessively high GeoJSON buffer size from 128 to 32 to improve the memory footprint. |
| 97 | +- Avoid unnecessary navigation arrow GeoJSON updates |
| 98 | +- Optimized camera animations that involve significant zoom change. |
| 99 | +- Fixed an issue where the closer part of route line might have been overlapped by a farther part in case they covered the same space within a single leg (e. g. U-turns on narrow roads). |
| 100 | +- Don't reset the re-route request when on-route/off-route events are flaky. |
| 101 | +- Use the `enhancedLocation` in the RoadCamerasManager class to get a more accurate current speed for the vehicle. |
| 102 | +- Fixed an issue where after a reroute the vanishing point on the route line might have been ahead of the actual vehicle's position. |
| 103 | +- Added `HistoryRecorderOptions#shouldRecordRouteLineEvents` property to enable/disable route line events collection for manual recording (see `CopilotOptions#shouldRecordRouteLineEvents` for the same functionality with Copilot); it is disabled by default. |
| 104 | +- Fixed an issue where the Speed Camera notification would appear prematurely when the car's speed was 0. |
| 105 | +- Fix Route replayer: normalize bearing values to be in the range of [0..360) degrees. |
| 106 | +- Fixed a bug where alternative routes from `RoutesUpdatedResult#ignoredRoutes` were set to `RoutesUpdatedResult#navigationRoutes` after the first route progress update. |
| 107 | +- Fix when already passed part of route appears behind CCP |
| 108 | +- Fixed a crash that happened on foreground service start on Android APIs 28 and below. |
| 109 | +- Deprecated EstimatedTimeToArrivalFormatter and introduced EstimatedTimeOfArrivalFormatter, which allows to format ETA with respect to destination time zone. |
| 110 | +- Deprecated TripProgressUpdateFormatter.estimatedTimeToArrivalFormatter and introduced TripProgressUpdateFormatter.estimatedTimeOfArrivalFormatter, which allows to format ETA with respect to destination time zone. |
| 111 | +- Fixed `MapboxNavigationSDKInitializerImpl` logic so that `uxfKey` is properly retrieved and sent over. |
| 112 | +- Fixed the condition for verifying the last good signal state in the offroad detection logic |
| 113 | +- Fixed incorrect calculation of a "missing part" of the route causing all lanes to be mark as divergent |
| 114 | +- Fixed EHorizon rural road objects sometimes marked as urban |
| 115 | +- Fixed a bug that happened during reroute in case if initial route was requested with `approaches` option specified. |
| 116 | +- Improved reroute and alternative routes behavior |
| 117 | +- Fixed map matching bug after leaving a tunnel |
| 118 | +- Increased route stickiness in dead reckoning mode |
| 119 | +- Added ability to send raw unfused GNSS location in addition to fused one |
| 120 | +- Improved odometry and road graph fusing in urban canyons |
| 121 | +- Signature of experimental `RawGnssSatelliteData` has been changed, now it requires `residual` as a constructor parameter |
| 122 | +- Experimental `RawGnssLocation` type has been removed, now `RawGnssData` requires `DilutionOfPrecision` as a parameter |
| 123 | +- Now service type is specified explicitly when foreground location service starts. |
| 124 | +- Nav SDK now removes passed alternative routes as soon as user passed fork point. [#6813](https://github.com/mapbox/mapbox-navigation-android/pull/6813) |
| 125 | +- Fixed a potential route line layers visibility race, which might have happened if you invoked `MapboxRouteLineView#showPrimaryRoute` and `MapboxRouteLineView#renderRouteDrawData` approximately at the same time. [#6751](https://github.com/mapbox/mapbox-navigation-android/pull/6751) |
| 126 | +- Optimized CA routes handling by skiping route parsing if it's already exist in direction session [#6868](https://github.com/mapbox/mapbox-navigation-android/pull/6868) |
| 127 | +- Fixed `CarSearchLocationProvider` produces _NullPointerException_ when using Mapbox Search SDK. [#6702](https://github.com/mapbox/mapbox-navigation-android/pull/6702) |
| 128 | +- Fixed an issue preventing Copilot from correctly recording history events. [#6787](https://github.com/mapbox/mapbox-navigation-android/pull/6787) |
| 129 | +- Improved reroute and alternative routes behavior [#6989](https://github.com/mapbox/mapbox-navigation-android/pull/6989) |
| 130 | +- Fixed a bug causing some history files recorded during the previous app sessions not to be uploaded by the Copilot. [#6359](https://github.com/mapbox/mapbox-navigation-android/pull/6359) |
| 131 | +- Fixed an issue where native memory was not being properly released after the `MapboxNavigation` object was destroyed. [#6376](https://github.com/mapbox/mapbox-navigation-android/pull/6376) |
| 132 | +- Fixed the issue of unwanted rerouting occurring immediately after setting a new route [#6163](https://github.com/mapbox/mapbox-navigation-android/pull/6163) |
| 133 | +- Fixed a crash caused by an overflow in the JNI global reference table. [#6290](https://github.com/mapbox/mapbox-navigation-android/pull/6290) |
| 134 | +- Fixed an issue with vignettes in Romania and Bulgaria for offline routing when tolls are excluded. [#6290](https://github.com/mapbox/mapbox-navigation-android/pull/6290) |
| 135 | +- Addressed several issues that occurred when switching to an alternative route. [#6290](https://github.com/mapbox/mapbox-navigation-android/pull/6290) |
| 136 | +- Implementation of `RerouteController#registerRerouteStateObserver` now invokes observer immediately with current state instead of posting invocation to the main looper. [#5286](https://github.com/mapbox/mapbox-navigation-android/pull/5286) |
| 137 | +- Fixed UI jank caused by on-device TextToSpeech player. [#5638](https://github.com/mapbox/mapbox-navigation-android/pull/5638) |
| 138 | +- Removed `PredictiveCacheController#removeSearchControllers` and `PredictiveCacheController#createSearchControllers`. Now search predictive cache controller is created and destroyed together with `PredictiveCacheController` instance if `PredictiveCacheOptions.predictiveCacheSearchOptionsList` is provided. [#5714](https://github.com/mapbox/mapbox-navigation-android/pull/5714) |
| 139 | +- Improve performance when handling large road objects on the eHorizon's MPP. [#6014](https://github.com/mapbox/mapbox-navigation-android/pull/6014) |
| 140 | +- Fixed `Routes` that origin is out of primary route cannot be added as alternatives. [#5848](https://github.com/mapbox/mapbox-navigation-android/pull/5848) |
| 141 | +- Fixed a crash due to incorrect OpenLR input data [#5400](https://github.com/mapbox/mapbox-navigation-android/pull/5400) |
| 142 | +- Fixed a bug with spinning smoothed coordinate [#5400](https://github.com/mapbox/mapbox-navigation-android/pull/5400) |
| 143 | +- 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. |
| 144 | + |
| 145 | +### Mapbox dependencies |
| 146 | +This release depends on, and has been tested with, the following Mapbox dependencies: |
| 147 | +- Mapbox Maps SDK `v11.16.0` ([release notes](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.16.0)) |
| 148 | +- Mapbox Navigation Native `v324.16.0` |
| 149 | +- Mapbox Core Common `v24.16.0` |
| 150 | +- Mapbox Java `v7.8.0` ([release notes](https://github.com/mapbox/mapbox-java/releases/tag/v7.8.0)) |
| 151 | + |
| 152 | + |
3 | 153 | ## Navigation SDK Core Framework 3.16.0-rc.2 - 17 October, 2025 |
4 | 154 | #### Features |
5 | 155 |
|
|
0 commit comments