Releases: mapbox/mapbox-navigation-android
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
NavigationMapRoute
style.
- 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
NavigationView
to 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
List
ofMilestone
to be added at the same time, rather than eachMilestone
added individually. - Bug fixes
Navigation UI libandroid-navigation-ui
- Breaking change:
origin
,destination
,unitType
, andlocale
have been removed fromNavigationViewOptions
andNavigationLauncherOptions
.- 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 theNavigationLauncher
orNavigationView
itself. - We will now use the
language
andvoiceUnit
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
andMETRIC
voice units for our localization. - The
NavigationRoute.``builder``(this)
now takes in aContext
so we can provide device defaults based on the current configuration if alanguage
orvoiceUnit
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.
- 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
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 theLocation
updates are traveling within along the route.- Note: the
DirectionsRoute
must be requested withANNOTATION_DISTANCE
to 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#getNavigationAsync
has been updated toNavigationView#initialize
- API Voice Integration
- An AWS pool ID is no longer needed in
NavigationLauncherOptions
orNavigationViewOptions
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 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.0
release.
- 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
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 withNavigationLauncher
.- Both
NavigationLauncherOptions
andNavigationViewOptions
subclassNavigationOptions
as there a few shared variables between both options objects. - Previously
NavigationViewOptions
were used withNavigationLauncher
as well asNavigationView#startNavigation
. This didn't make sense becauseNavigationLauncher
wasn'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
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
- 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
Mapbox Navigation SDK v0.11.0
Release Notes
Navigation Core libandroid-navigation
- Bug fixes
- Now fixed:
OffRouteDetector
was firing unnecessary off-route events in roundabouts / circular on and off ramps.
- Now fixed:
Navigation UI libandroid-navigation-ui
DynamicCamera
added to provide contextual camera movements based on the user’s location traveling along the givenLegStep
.- Updated Mapbox Android Services, LocationLayerPlugin, and Maps SDKs to their latest released versions.
- Bug fixes.
Changelog:
- Fix same point being added twice for LatLngBounds #741
- Fix Recent Distances from maneuver Off-Route #739
- Update MAS Dependencies #738
- Update LocationLayerPlugin to 0.4.0 #734
- Fix visibility bug with TurnLanes #733
- Update Maps SDK 5.5.0 #732
- Show first BannerInstruction immediately #731
- Fix initialization of directions list #728
- Default Dynamic Camera for Navigation UI #679
Mapbox Navigation SDK v0.10.0
Release Notes
Navigation Core libandroid-navigation
- Off-Route Bug fixes
- There we several bugs causing incorrect off-route events while location updates were actually still on the route.
- Our entire
OffRouteDetector
was reworked in #667 to address these bugs and tests were added to ensure the logic remains stable.
- Faster-Route detection now considers bearing. The
DirectionsRoute
provided byFasterRouteListener
was not considering the direction the user was going when making new route requests, which would sometimes result in the new route calling for an immediate u-turn. This was fixed with #687.
Navigation UI libandroid-navigation-ui
- Localization Improvements
- The distance units will automatically be set to either imperial or metric based on the set
Locale
of the device. You can now also override this withMapboxNavigationOptions#locale(Locale)
.- Spoken instructions are now also based on
Locale
, so for bothPollyPlayer
and the defaultTextToSpeak
engine. This will better ensure instructions are spoken with better pronunciations.
- Spoken instructions are now also based on
- The distance units will automatically be set to either imperial or metric based on the set
- When a new
DirectionsRoute
request would be made during an off-route event, the turn-by-turn UI would not consider previous options or remaining waypoints when making the new route request.- #680 ensures the original options from the
DirectionsRoute
provided are considered, along with calculating the remaining waypoints along the route if there are any.
- #680 ensures the original options from the
- Bug fixes surrounding the
NavigationMapRoute
,InstructionView
, andFeedbackBottomSheet
.
Changelog:
- Fix NPE with MapRoute click listener #721
- Null check camera tracking #719
- Initialize metric session state in constructor #718
- Clean dependencies exposed #711
- Fix Javadocs so that supports JDK 8 #712
- Clear features so DirectionsRoute isn't redrawn when new style loads #706
- Fix bug with MapRoute onClick #703
- Fix flashing InstructionView list during re-routes #700
- Fix FeedbackBottomSheet rotation bug #699
- Check Turn / Then Banner on each update #696
- Instructions based on locale #691
- Cancel animation if AlertView detaches while running #689
- Add bearing to RouteEngine requests #687
- LocationViewModel obtain best LocationEngine #685
- Dependencies Bump #684
- Fix issue with startup in Night Mode #683
- Cache route options / calculate remaining waypoints #680
- Switched setOnMapClickListener() to addOnMapClickListener() #672
- Locale distance formatter #668
- Off-Route Bug Fixes #667
- Update Default Zoom Level #655
Mapbox Navigation SDK v0.10.0-beta.1
Beta Release
- Clear features so DirectionsRoute isn't redrawn when new style loads #706
- Fix bug with MapRoute onClick #703
- Fix flashing InstructionView list during re-routes #700
- Fix FeedbackBottomSheet rotation bug #699
- Check Turn / Then Banner on each update #696
- Instructions based on locale #691
- Cancel animation if AlertView detaches while running #689
- Add bearing to RouteEngine requests #687
- LocationViewModel obtain best LocationEngine #685
- Dependencies Bump #684
- Fix issue with startup in Night Mode #683
- Cache route options / calculate remaining waypoints #680
- Switched setOnMapClickListener() to addOnMapClickListener() #672
- Locale distance formatter #668
- Off-Route Bug Fixes #667
- Update Default Zoom Level #655