Releases: mapbox/mapbox-navigation-android
Mapbox Navigation SDK v0.17.0
Release Notes
Navigation Core libandroid-navigation
- Rolled back the filter rules in favor of the less aggressive checks we had prior.
- Allow setting of accuracy threshold in
MapboxNavigationOptions(default 100) -⚠️ locationAccuracyPercentThreshold,locationUpdateTimeInMillisThresholdandlocationVelocityInMetersPerSecondThresholdoptions are not available anymore.
- Allow setting of accuracy threshold in
- Bug fixes and updates.
Navigation UI libandroid-navigation-ui
- Added APIs to the
NavigationViewthat give access to theNavigationMapboxMapandMapboxNavigationinstances once the view has been initialized / navigation has started -⚠️ NavigationView#retrieveMapboxMap()is not available anymore. - Bug fixes.
Changelog:
- Bump MAS version to 3.4.1 #1203
- Notify InstructionListAdapter after animation finishes #1143
- Revert MAS version from 3.4.0 to 3.3.0 #1200
- Update Java SDK to 3.4.0 #1196
- Allow access to NavigationMapboxMap and MapboxNavigation #1179
- Retrieve feedback Strings from Resources #1194
- Update README Snapshot #1186
- Add gradle-versions-plugin to the project #1187
- Add a null check to prevent NPE in NavigationViewModel onDestroy #1192
- Remove Location filter and check Location#getAccuracy #1157
- Provide example of showing and hiding Fragment with NavigationView #1113
- Added InstanceState to simplify saving the state #1162
- Fix OffRoute engine cleared before service shutdown #1167
- Transifex Updates #1145
- Fix SpeechAnnouncementListener example and add tests #1166
- Update dependencies LLP, ConstraintLayout #1172
- Consolidate InstructionView DistanceFormatters #1174
- Add ETA support for the notification back #1184
- Fix exception when adding routes in NavigationMapRoute #1150
- Check dispatcher on announcement and instruction events in ViewModel #1152
- Update LeakCanary to 1.6.1 #1181
- Re-initialize arrow sources in NavigationMapRoute after style loaded #1180
- Use application Context for CustomNavigationNotification example #1182
- Update README.md with UI build.gradle instructions #1148
- Add maneuver view roundabout angle bottom limit #1144
- Use roundabout degrees for "then" step in InstructionView #1141
- Remove navigation listeners before clearing NavigationEngineFactory #1140
- Prevent to use the map route until the map is ready and the route fetched #1134
Mapbox Navigation SDK v0.16.0
Release Notes
Navigation Core libandroid-navigation
- Default notification now considers 24-hour time formatting from
MapboxNavigationOptions. - Bug fixes and updates.
Navigation UI libandroid-navigation-ui
- Added ability to stop navigation, using
NavigationView#stopNavigation(), while theNavigationViewis still showing (previously, the view had to be destroyed to stop navigation). - Added
BannerInstructionListenerandSpeechAnnouncementListenerthat can be added toNavigationViewOptionsand can intercept announcements or new instructions and will allow developers to edit or stop them from continuing. Example:
@Override
public SpeechAnnouncement willVoice(SpeechAnnouncement announcement) {
return announcement.toBuilder().announcement("All announcments will be the same.").build();
}
@Override
public BannerInstructions willDisplay(BannerInstructions instructions) {
return instructions;
}
- Day / Night mode updates:
- If using
NavigationLauncher, we will automatically setAppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO);only if your device is currently following the system setting. - If using
NavigationViewwithin your ownActivitythe view will update based on whatever the current mode is in theActivity.
- If using
MapboxNavigationNotification(default notification provided by the SDK) layout updates and improvements.- 🐛 fix for re-initializing a
NavigationViewin aFragmentthat was added to the back stack. - Bug fixes.
Changelog:
- Fixed error by only accepting SUCCESS state #1127
- Make navigation map null when shutting navigation view down #1125
- Update Maps SDK 6.3.0 and Telem 3.1.4 #1124
- Fix IllegalArgumentException when updating InstructionList #1123
- Update MapboxNavigationNotification to consider 24 hour time formatting #1115
- Prevent route overview animation with insufficient route data #1120
- Prevent NavigationNotification update after unregistered #1118
- Refactor InstructionListAdapter and limit roundabout degrees in ManeuverView #1064
- Improve catching low point amounts #1122
- Simplify find current banner and voice instructions algorithms #1117
- Update TimeFormatter to include localized Strings #1106
- Add InstructionListener for intercepting Voice / Banner Instructions #1107
- NavigationService refactor and tests #1066
- Add dual navigation map example to the test app #1092
- Update LocationLayerPlugin 0.6.0 #1102
- Fix navigation camera on start null pointer exception #1094
- Fix navigation map route index out of bounds exception #1093
- Ignore arrival checks after route has finished #1070
- Added InstructionView list state to saveInstanceState #1079
- Update Transifex translations #1088
- Rename MapView id included in NavigationView #1087
- Update Transifex translations #1078
- Update navigation view activity (from the test app) naming #1076
- Add end navigation functionality to navigation view #959
- Fix voiceLanguage NPE and add tests for NavigationSpeechPlayer #1054
- Fix vector drawables for < API 21 in test Application #1067
- Re-did the navigation notification layout #1059
- Setup AppCompatDelegate night mode to automatic #1063
- Fix upcoming maneuver arrow underneath road labels #1053
Mapbox Navigation SDK v0.16.0-beta.1
Pre-release beta of 0.16.0
Mapbox Navigation SDK v0.15.0
Release Notes
Release contains new APIs → See Navigation UI Notes
Navigation Core libandroid-navigation
- Add internal logging for error scenarios related to voice instructions
- Fixed issue with off-route events working incorrectly after the user has arrived at the end of their route
- Bug fixes
Navigation UI libandroid-navigation-ui
- Upcoming maneuver arrow drawn on the route line - we now support dynamically drawing an arrow at the upcoming maneuver point (see gif)
- Just like the route line itself, the colors of the arrow itself are customizable via a
NavigationMapRoutestyle.
- Just like the route line itself, the colors of the arrow itself are customizable via a
- Current way name pill underneath user location icon (also, see gif)
- New APIs in
NavigationViewto customize this:NavigationView#updateWaynameView(String wayname)NavigationView#updateWaynameVisibility(boolean isVisible)NavigationView#updateWaynameQueryMap(boolean isEnabled)
- New APIs in
- Bug fixes
Changelog:
- Use theme attribute to update MapView map style URL #1018
- Remove setting voiceLanguage / voice unitType in RouteFetcher #1046
- Add distance remaining buffer to show first instruction immediately #1043
- Revert Maps SDK version to 6.1.3 #1044
- Update Maps SDK to 6.2.0 #1042
- Update to MAS 3.3.0 and add approaches / waypointNames to NavigationRoute #996
- Fix upcoming arrow is drawn over annotations #1041
- Added error logging for API voice errors #1036
- Removed AndroidSpeechPlayer.UtteranceProgressListener and replaced wi… #1017
- Added check for whether a language is supported by API voice before d… #1004
- Updated NavigationRoute.language to take a Locale #1025
- Add route overview button and animation to NavigationView #967
- NavigationViewEventDispatcher remove navigation listeners in onDestroy #1013
- Fixed issue where map still had focus when instruction list was visib… #1014
- Remove origin, destination, unit type and locale from nav options #965
- Remove metric arrival event reset for multiple waypoints #1022
- Check for valid name property value in MapWayname #1031
- Update NavigationActivity naming to avoid naming collisions #1020
- Hide way name when camera is not tracking Location #1027
- Add check to remove listener from location engine in NavigationService #1026
- Fixed overlapping of button and compass by wrapping button content #990
- Add missing arrival ManeuverViewMap pair #1007
- Remove attempt to place route source when style layers are null #1006
- Update LocationLayerPlugin to 0.5.3, MAS 3.2.0 #1010
- Added extra call to onError for cases where a response is received bu… #997
- Added InstructionViewCallback to allow views to be alerted when the in… #988
- Update repositories block in build.gradle to have google() as the first entry #1000
- Add wayname underneath navigation puck #953
- Add upcoming maneuver arrow on the route line #934
- Update InstructionView with BannerMilestone only with callback #969
- Added onOffRoute call and removed queue from NavigationInstructionPlayer #986
- Example cleanup #987
- Check distance remaining before running OffRouteDetector logic #977
- Add try catch when obtaining FragmentManager in InstructionView #973
Mapbox Navigation SDK v0.15.0-beta.2
Pre-release of v0.15.0:
- Stability fixes / improvements over
beta.1
Mapbox Navigation SDK v0.15.0-beta.1
Pre-release of v0.15.0:
- Includes upcoming maneuver arrow on the route line, current way name underneath the location "puck", and other bug fixes.
Mapbox Navigation SDK v0.14.0
Release Notes
Release contains API Breaking Changes → See Navigation UI Notes
Navigation Core libandroid-navigation
- New API that allows for a
ListofMilestoneto be added at the same time, rather than eachMilestoneadded individually. - Bug fixes
Navigation UI libandroid-navigation-ui
- Breaking change:
origin,destination,unitType, andlocalehave been removed fromNavigationViewOptionsandNavigationLauncherOptions.- This API change was done in an effort to make localizing the SDK more straightforward.
- You now must request a
DirectionsRouteprior to starting navigation with either theNavigationLauncherorNavigationViewitself. - We will now use the
languageandvoiceUnittype to determine pronunciation for voice announcements and parsing of distances (imperial v. metric) in the UI. - An example request demonstrating how to configure:
NavigationRoute.builder(this) .accessToken(Mapbox.getAccessToken()) .origin(origin) .destination(destination) .language(Locale.FRANCE.getLanguage()) .voiceUnits(DirectionsCriteria.METRIC) .build().getRoute(this); - Once this route is successfully retrieved by our Directions API and passed to the SDK, we will look at the French
LocaleandMETRICvoice units for our localization. - The
NavigationRoute.``builder``(this)now takes in aContextso we can provide device defaults based on the current configuration if alanguageorvoiceUnitis not set.
- Dynamic abbreviations in the
InstructionView- The Directions API now offers abbreviations for each components being used to create the top banner. If the combined text / images do not fit within the
TextView, we will now automatically abbreviate certain words in an effort to make the text fit without an ellipsis.
- The Directions API now offers abbreviations for each components being used to create the top banner. If the combined text / images do not fit within the
- Navigation Map Styles
v3- Updated default maps styles designed by our Cartography team.
- Bug fixes
Changelog:
- Always provide DirectionsRoute in NavigationActivity #980
- Update Maps SDK to 6.1.3 and Events library to 3.1.2 #975
- Add List of Milestones to NavigationViewOptions #974
- Remove origin, destination, unit type and locale from nav options #965
- Update Maps SDK 6.1.2 #962
- Disable debug logging for Telemetry and Image loading #961
- Reset EventDispatcher in onDestroy #954
- Fix link in CONTRIBUTING.md #952
- Fix navigation guidance styles keys #948
- Resume navigation state based on MapboxNavigation running #946
- Initialize ViewModel EventDispatcher in NavigationView constructor #945
- Add NavigationHelper check for valid step points using lineSlice #944
- Use last BannerInstruction for arrival event #943
- Downgrade min sdk version to 14 #942
- Remove onStyleLoaded Callback in NavigationView #939
- Update ConstraintLayout, Support Lib, and LocationLayerPlugin dependencies #938
- Update translation Strings and add Burmese #937
- Check for valid BannerInstructions when milestones are enabled #936
- Added null check to make sure a file is actually returned #925
- Update to Guidance V3 Map Styles #917
- Check NavigationOptions in NavigationService #916
- Remove AWS Polly dependency not needed anymore #914
- Update localization.md #913
- Dynamic abbreviations in banner instructions #887
Mapbox Navigation SDK v0.13.0
Release Notes
Release contains API Breaking Changes → See Navigation UI Notes
Navigation Core libandroid-navigation
RouteProgressnow provides more data that can be used while navigating:RouteProgress#currentStepPointsRouteProgress#upcomingStepPointsRouteProgress#currentLegProgress#currentLegAnnotationwhich will provide the current annotation data that theLocationupdates are traveling within along the route.- Note: the
DirectionsRoutemust be requested withANNOTATION_DISTANCEto enable this within theRouteProgress- we now do this by default inNavigationRoute.
- Note: the
RouteProgress#currentLegProgress#currentStepProgress#currentIntersection- An intersection is considered a current intersection once passed through and will remain so until a different intersection is passed through.
RouteProgress#currentLegProgress#currentStepProgress#upcomingIntersection- The intersection being traveled towards on the route. Will be null if the upcoming step is null (last step of the leg).
- Bug fixes
Navigation UI libandroid-navigation-ui
- Breaking change:
NavigationView#getNavigationAsynchas been updated toNavigationView#initialize - API Voice Integration
- An AWS pool ID is no longer needed in
NavigationLauncherOptionsorNavigationViewOptionsto access improved voice instructions with AWS Polly. We now provide this functionality with a valid internet connection. If, at the time of the announcement, an internet connection isn’t found or the request fails, the SDK will fall back to AndroidTextToSpeech
- An AWS pool ID is no longer needed in
- Maps SDK
6.0.1- The new Mapbox Maps SDK release has been integrated into our turn-by-turn UI. This also includes the LocationLayerPlugin
0.5.0release.
- The new Mapbox Maps SDK release has been integrated into our turn-by-turn UI. This also includes the LocationLayerPlugin
Changelog:
- Add missing uturn step maneuver modifier to should flip modifiers set #908
- Bump Mapbox SDK Services to 3.1.0 version #907
- Reverse maneuver sharp left resource #905
- Fixed bug where we weren't checking if the unit type changed before l… #896
- Remove use of LiveData for fetching DirectionsRoute and updating Location #894
- Update String resources with new Transifex translations #889
- Cancel delayed transitions when InstructionView is detached #885
- Remove app name String resource from libandroid-navigation #884
- Update localization.md #881
- Fix Feedback FAB margins #878
- Update new Transifex translation Strings #870
- Check for null camera engine before returning from MapboxNavigation #866
- Update Maps SDK 5.5.2 #865
- Added null check for race condition when deleting instruction files #860
- Add null start timestamp check for metric events #857
- Add NavigationLauncherOption snap-to-route enabled #856
- Use BannerText roundabout degrees + Banner and Voice Milestone Tests #854
- Added null checks in case the user isn't using voice instructions #852
- Add gradle-dependency-graph-generator-plugin to the project #850
- Remove draw routes and add direction waypoints calls already being called #849
- Add AutoValue Proguard rule #838
- Validate route profile passed into RouteViewModel #829
- Remove NavigationCamera ProgressChangeListener as public api #828
- Upgrade RouteProgress Step Data #812
- Integrate API Voice #751
Mapbox Navigation SDK v0.12.0
Release Notes
*** Release uses Java 8 (static interface method) ***
If you run into this error when updating the SDK:
Static interface methods are only supported starting with Android N (--min-api 24): com.mapbox.geojson.Geometry com.mapbox.geojson.Geometry.fromJson(java.lang.String)
Message{kind=ERROR, text=Static interface methods are only supported starting with Android N (--min-api 24): com.mapbox.geojson.Geometry com.mapbox.geojson.Geometry.fromJson(java.lang.String), sources=[Unknown source file], tool name=Optional.of(D8)}
The static interface method used in com.mapbox.geojson.Geometry is compatible with any minSdkVersion (see Supported Java 8 Language Features and APIs).
To fix the issue you're seeing, ensure that you are using Gradle version 3.0 or greater, then you can add this to your build.gradle:
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
This can also be done via your project settings (File > Project Structure > Your_Module > Source Compatibility / Target Compatibility).
With Android Studio 3.1.0, you should not run into this issue, as the new dex compiler D8 will be enabled by default.
Release contains API Breaking Changes → See Navigation UI Notes
Navigation Core libandroid-navigation
- Complete rework of how we validate incoming
Locationupdates from the device GPS. #690 updated this logic, where we were previously checking if the update had speed and a horizontal accuracy of < 100 meters. - Bug fixes
- Issue with disabling off-route detection fixed
- Index out of bounds for decoding step geometry fixed
Navigation UI libandroid-navigation-ui
- #782 (breaking change) introduced
NavigationLauncherOptionsto be used withNavigationLauncher.- Both
NavigationLauncherOptionsandNavigationViewOptionssubclassNavigationOptionsas there a few shared variables between both options objects. - Previously
NavigationViewOptionswere used withNavigationLauncheras well asNavigationView#startNavigation. This didn't make sense becauseNavigationLauncherwasn't considering all of the variables passed fromNavigationViewOptions, such as the listeners.
- Both
- The navigation UI now supports with 12 / 24 hour arrival-time formatting with an option added to
NavigationViewOptions#805 - With #808, during off-route scenarios, the navigation UI will select the most similar route (compared to the one you were driving along) from the list of routes returned from our Directions API. Previously, we were always selecting the fastest from A to B.
Changelog:
- Add
MapboxNavigationOptionsto adjust location validation thresholds #818 - Set default driving profile and check for empty profile #816
- Update to MAS 3.0.1 #815
- Added safety for
NONE_SPECIFIEDtype for voice units #811 - Add stick to chosen route when re-routing with UI functionality #808
- Remove
NavigationViewlifecycle observer and add Fragment Example #806 - Add 12/24 hour format to
NavigationViewOptions#805 - Fixed unit type was defaulting to imperial #804
- Update ISSUE_TEMPLATE.md #798
- Decrease Robo tests time to 5 minutes #795
- Send departure event with a valid distance traveled #789
- Remove last location check from location validation #788
- Add localization instructions #785
- Extract
NavigationEngineprocessing logic and add tests #784 - Fix OffRoute detection disabled bug #783
- Create separate options for Launcher and View #782
- Create LocationValidator for checking new location updates #690
Mapbox Navigation SDK v0.11.1
- Adjust sound layout margin #775
- Fix distancesFromManeuver not being cleared #773
- Allow setting of custom destination marker in theme #763
- Fixed back button in NavigationViewActivity #768
- Fixed unit type bug #769
- Fix MapRoute listener not firing for index 0 #772
- Stop scroll of InstructionList before hiding #766
- Add baseUrl to NavigationRoute and Turf conversion #767
- Force first location update without last location #756
- Update EventListener Thread Safe #762
- Create camera animation from time between updates #753
- NavigationView Landscape Optimizations #749

