Skip to content

Releases: mapbox/mapbox-navigation-android

Mapbox Navigation SDK v0.17.0

10 Aug 23:01
9f55b59

Choose a tag to compare

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, locationUpdateTimeInMillisThreshold and locationVelocityInMetersPerSecondThreshold options are not available anymore.
  • Bug fixes and updates.

Navigation UI libandroid-navigation-ui

  • Added APIs to the NavigationView that give access to the NavigationMapboxMap and MapboxNavigation instances 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

20 Jul 15:26

Choose a tag to compare

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 the NavigationView is still showing (previously, the view had to be destroyed to stop navigation).
  • Added BannerInstructionListener and SpeechAnnouncementListener that can be added to NavigationViewOptions and 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 set AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO); only if your device is currently following the system setting.
    • If using NavigationView within your own Activity the view will update based on whatever the current mode is in the Activity.
  • MapboxNavigationNotification (default notification provided by the SDK) layout updates and improvements.
  • 🐛 fix for re-initializing a NavigationView in a Fragment that 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

29 Jun 21:04

Choose a tag to compare

Pre-release beta of 0.16.0

Mapbox Navigation SDK v0.15.0

21 Jun 22:04

Choose a tag to compare

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 NavigationMapRoute style.
  • Current way name pill underneath user location icon (also, see gif)
    • New APIs in NavigationView to customize this:
      • NavigationView#updateWaynameView(String wayname)
      • NavigationView#updateWaynameVisibility(boolean isVisible)
      • NavigationView#updateWaynameQueryMap(boolean isEnabled)
  • Bug fixes

ezgif com-video-to-gif

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

15 Jun 23:51

Choose a tag to compare

Pre-release of v0.15.0:

  • Stability fixes / improvements over beta.1

Mapbox Navigation SDK v0.15.0-beta.1

12 Jun 20:39

Choose a tag to compare

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

31 May 18:09

Choose a tag to compare

Release Notes

Release contains API Breaking Changes → See Navigation UI Notes

Navigation Core libandroid-navigation

  • New API that allows for a List of Milestone to be added at the same time, rather than each Milestone added individually.
  • Bug fixes

Navigation UI libandroid-navigation-ui

  • Breaking change: origin, destination, unitType, and locale have been removed from NavigationViewOptions and NavigationLauncherOptions.
    • This API change was done in an effort to make localizing the SDK more straightforward.
    • You now must request a DirectionsRoute prior to starting navigation with either the NavigationLauncher or NavigationView itself.
    • We will now use the language and voiceUnit type 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 Locale and METRIC voice units for our localization.
    • The NavigationRoute.``builder``(this) now takes in a Context so we can provide device defaults based on the current configuration if a language or voiceUnit is 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.

ezgif com-video-to-gif

  • 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

03 May 04:56

Choose a tag to compare

Release Notes

Release contains API Breaking Changes → See Navigation UI Notes

Navigation Core libandroid-navigation

  • RouteProgress now provides more data that can be used while navigating:
    • RouteProgress#currentStepPoints
    • RouteProgress#upcomingStepPoints
    • RouteProgress#currentLegProgress#currentLegAnnotation which will provide the current annotation data that the Location updates are traveling within along the route.
      • Note: the DirectionsRoute must be requested with ANNOTATION_DISTANCE to enable this within the RouteProgress - we now do this by default in NavigationRoute.
    • 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#getNavigationAsync has been updated to NavigationView#initialize
  • API Voice Integration
    • An AWS pool ID is no longer needed in NavigationLauncherOptions or NavigationViewOptions to 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 Android TextToSpeech
  • 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.0 release.

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

03 Apr 20:12
4daaed8

Choose a tag to compare

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 Location updates 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 NavigationLauncherOptions to be used with NavigationLauncher.
    • Both NavigationLauncherOptions and NavigationViewOptions subclass NavigationOptions as there a few shared variables between both options objects.
    • Previously NavigationViewOptions were used with NavigationLauncher as well as NavigationView#startNavigation. This didn't make sense because NavigationLauncher wasn't considering all of the variables passed from NavigationViewOptions, such as the listeners.
  • 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 MapboxNavigationOptions to 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_SPECIFIED type for voice units #811
  • Add stick to chosen route when re-routing with UI functionality #808
  • Remove NavigationView lifecycle 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 NavigationEngine processing 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

16 Mar 21:25

Choose a tag to compare

  • 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