This changelog details the new features and bug fixes in each release of the Navigation SDK for Android.
October 18, 2021 - Freezing support for API Level 23, 24 and 25
In response to changes in our internal dependencies, Android API Level 23, 24, and 25 (Android 6, 7.0 and 7.1) will not be supported in new versions of the Navigation and Driver SDKs for Android, beginning in the third quarter of 2022.
Navigation and Driver SDKs for Android versions released beginning in the third quarter of 2022 will only support devices running a minimum of Android API Level 26.
App versions built with v4.x or lower of the Navigation and Driver SDKs for Android will continue to work on devices running Android API Level 25 and below.
Deprecation announcement (June 21, 2021)
This announcement describes deprecations to the Navigation SDK for Android and Driver SDK for Android as of the date listed above. This announcement was also sent out as a Mandatory Service Announcement (MSA) to affected customers.
Navigation SDK for Android and Driver SDK for Android v1.x deprecation
Nav/Driver SDK v1 was released in 2018, and with our v3 versions soon to be released, it’s time to deprecate v1 to avoid the unsustainability of supporting many major versions.
The time saved by not having to support this additional version will allow us to better support the latest major version and build more features that are important to our customers.
Thus, Nav/Driver SDK v1.x is now deprecated and will no longer be maintained after June 21, 2022.
Please take a moment to see how deprecations in SDK versions work.
See the Navigation SDK for Android v2/v3 release notes for additional Android deprecation information.
Version 1.51.1 (April 1, 2022)
Stability and bug fixes
Fixes a broken hyperlink in the Terms of Service dialog.
Some clients received a Terms of Service dialog error when the Android Activity was destroyed. Now clients will not longer experience this dialog error when an activity is destroyed.
Version 1.51 (January 18, 2022)
API changes
Bumps the minimum Android API level for the Navigation SDK to 23, and bumps the target API level to 30. This target version is in-line with the Google Play requirements.
Renders the polyline that trails the navigation chevron in the color "gray" to indicate that the user has already driven through that section of the route.
Version 1.50 (November 03, 2021)
- Jetified variant of Version 1.22. No changes have been made beyond the use of the AndroidX libraries.
Version 1.22 (October 07, 2021)
Stability and bug fixes
- Fixes a camera bug where the camera stops following user's location after stopNavigation is called.
- Fixes a camera bug where the recenter button appear after backgrouding the app.
- Fixes a potential memory leak issue.
- Fixes a bug that was producing ANR issues.
- Prevents a crash originated by the Terms of Service dialog.
Deprecations
- Deprecates #setDestinations with route token in favor of a new API that uses CustomRoutesOptions.
New Features
- Adding assistive pickup feature which adds new icon to nav footer UI.
- Adds 2-Wheeler support for Custom Routes.
Version 1.21.1 (July 13, 2021)
Stability and bug fixes
- Fixes an
IllegalStateException
associated with an overly restrictive preconditions check in implementation code. - Fixes a
NullPointerException
inNavigationView.onDestroy()
.
Version 1.21 (June 23, 2021)
API changes
- Speeding listeners are now supported in headless navigation. This makes it
possible to monitor speeding without first rendering a
View
or aFragment
from the Navigation SDK.
Stability and bug fixes
- Improved the robustness of map-tile loading in night-mode on first-time installs of apps.
Deprecations
The following methods have been deprecated in favor of Navigator.setSpeedAlertOptions()
:
NavigationView.setSpeedAlertOptions()
SupportNavigationFragment.setSpeedAlertOptions()
NavigationFragment.setSpeedAlertOptions()
Version 1.20.1 (July 14, 2021)
Stability and bug fixes
- Fixes an
IllegalStateException
associated with an overly restrictive preconditions check in implementation code. - Fixes a
NullPointerException
inNavigationView.onDestroy()
.
Version 1.20 (March 9, 2021)
- Added a new mandatory dependency. Add the following dependencies to your
Gradle dependency lists to avoid runtime crashes:
api 'joda-time:joda-time:2.9.9'
.
Stability and bug fixes
- Fixed an issue where consumers of the Navigation SDK using Joda-Time run into conflicts with the obfuscated version of jodatime which was packaged into our library.
- Fixed an issue in which the Navigation SDK accidentally hides consumer-app notifications it does not own upon launching a navigation session.
Version 1.19 (December 15, 2020)
API changes
The DriverSDK now always sends traffic data to FleetEngine. Previously this behavior was determined by the
UpdateVehicleResponse
flag; that flag is now ignored.The FleetEngine constructor has changed; wrappers were added for
AuthTokenFactory
andStatusListener
.Added two new methods to the Navigator API to allow setting and removing listeners for new navigation sessions.
Added a new method to the Navigator API to obtain transaction IDs for the ongoing navigation session. This API should be used when a new navigation session starts and when the transaction IDs change in an ongoing navigation session (e.g. when the list of journey segments is updated).
Version 1.18 (October 9, 2020)
Added
setAbnormalTerminationReportingEnabled(boolean)
method. This method allows users to disable crash detection monitoring.Fixed a bug where
LocationListeners
could not be unregistered from theonLocationChange
event.Fixed a gRPC crash where
io.grpc.util.SecretRoundRobinLoadBalancerProvider$Provider
could not be instantiated.
Version 1.17 (August 27, 2020)
You can now pass a route token to NavSDK to retrieve the route represented by that route token. The route token is associated with a route response when you call the Routes Preferred API. The new API is
Navigator#setDestination(List<Waypoint> destinations, String routeToken)
.Added some new mandatory dependencies. Add the following dependencies to your Gradle dependency lists to avoid runtime crashes:
api 'com.google.android.datatransport:transport-api:2.2.0' api 'com.google.android.datatransport:transport-backend-cct:2.2.0' api 'com.google.android.datatransport:transport-runtime:2.2.0'
Version 1.16 (August 10, 2020)
New features
Added the
Waypoint.Builder.setVehicleStopover
API that enables/disables the automatic relocation of stopovers in the route when waypoints are set in a place where it is not possible to stop.Added a parameter
SpeedAlertSeverity
to theSpeedAlert
callback. Use this parameter with theSpeedingListener
.
Stability and bug fixes
Deprecated
NavigationApi.cleanUp
method due to unwanted side effects likeNullPointerExceptions
leading to crashes.Deprecated
Waypoint.fromLatLng()
andWaypoint.fromPlaceId()
in favor ofWaypoint.builder()
.Deprecated the
AddressListener
class, contained in theNavigationTransactionRecorder
, because it is unused.
Version 1.15 (March 23, 2020)
New features
Customizable fonts/colors/icons for the Navigation header.
Support customization of the color of the recommended lane(s) in the Navigation Header UI.
Updates several APIs to follow the add-remove pattern for setting callbacks/listeners. Previous
set*
methods have been marked deprecated and will be removed in a future release. The deprecated methods listed here:SupportNavigationFragment.setOnNightModeChangedListener
SupportNavigationFragment.setOnRecenterButtonClickedListener
NavigationFragment.setOnNightModeChangedListener
NavigationFragment.setOnRecenterButtonClickedListener
NavigationView.setOnNightModeChangedListener
NavigationView.setOnRecenterButtonClickedListener
Navigator.setArrivalListener
Navigator.setRouteChangedListener
Navigator.setRemainingTimeOrDistanceChangedListener
Stability and bug fixes
Bump up the minSdkVersion for navsdk to 19.
Fixed a bug where lat/lng Waypoint names were not honored in case server-side reverse geocoding fails.
Version 1.14 (February 2, 2020)
New features
(Beta) The operator can influence which of the route options is followed by the driver by setting a target distance for the route in the directions request. This feature is in Beta, if you are interested please contact your customer engineering representative to learn more.
Compile sdk upped to API 29.
Stability and bug fixes
Fixed a bug in the Terms of Service dialogue which was preventing the "Accept" prompt to be mandatory for drivers.
Modified the exception handling behavior in the NDK components to avoid a crashing condition.
Version 1.13 (November 8, 2019)
New features
Drivers can now receive speed alerts when they exceed the speed limit. You can customize the look of the speed alert icons. As detailed in the Google Maps Enterprise terms of service, Google makes no warranties regarding the quality of any feature, including the accuracy of the speed alert feature. Speed alerts are intended to be used for informational purposes only.
Added a new routing option (
RoutingOptions
) that allows you to display alternate routes during route preview.Added a new camera perspective that shows a top-down view of the route, with the route oriented so that the vehicle always faces forward. You can configure this perspective by calling
NavFragment.getCamera().followMyLocation(Camera.Perspective.TOP_DOWN_HEADING_UP)
.Added a new API (
resetFreeNav()
inRoadSnappedLocationProvider
) that you can call to reset the Free Nav service whenever you stop receiving location updates on a registered listener, when navigation isn't active.
Stability and bug fixes
- Updated the content of the Terms of Service dialogue.
Version 1.12 (October 7, 2019)
New features
You can now hide and show one or all alternate routes during navigation.
You can now specify routing strategy in requests (shorter/fastest route).
Added the ability to fully customize the Terms and Conditions dialog (text size, color, etc.).
Stability and bug fixes
Fixed duplicate class in
com.google.http-client
issue.Updated the demo app to use the new Places SDK, and Jetified the demo app.
Improved the camera frame rate when in trip overview.
Version 1.11 (June 28, 2019)
Performance improvements
setDestination
network latency has been improved.
Bug fixes
Fixed an inconsistency with the
onArrival
callback when navigating multiple waypoints.Fixed an issue where the arrival might prematurely trigger for waypoints not near the current location.
java.lang.IllegalStateException
- A call to
NavigationView.onDestroy
cannot follow a call toNavigationView.onCreate
.
- A call to
Miscellaneous
Open source software license updates.
Removed the route ETA callouts on the route - to remove redundant data, and to simplify the UI.
Version 1.10.2 (April 11, 2019)
Stability and bug fixes
- Fixed a bug that could cause an IllegalStateException to be thrown during a Fragment life cycle transition: onCreate() to onDestroy().
Version 1.10 (April 11, 2019)
Features
Customizable Terms and Conditions dialogue header You can customize the title text of the Terms and Conditions dialogue box using
showTermsAndConditionsDialog
.Waypoint marker Removed the alphanumeric characters from the waypoint markers.
Version 1.9 (February 11, 2019)
Features
Secondary Header You can add custom content below the navigation header using the custom controls feature. See the
SECONDARY_HEADER
position for thesetCustomControl
method.New dependencies Add dependencies for Cronet and Glide. For details, see Update the Gradle build script in the Project Configuration topic.
Known issues
- If the demo app crashes with java.lang.ClassNotFoundException: Didn't find class "com.example.navigationapidemo.SplashScreenActivity",
you need to update the dependency for the Gradle Build tools to 3.3.1 or higher.
In the
build.gradle
file, verify that thebuildscript
matches the example below:
buildscript {
repositories {
mavenCentral()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.1'
}
}
Version 1.8.1 (January 22, 2019)
Stability and Bug fixes
- Taxi mode crashes under certain camera modes are fixed.
- Various stability improvements.
Version 1.8 (December 21, 2018)
Features
Taxi mode - BETA: Your app can use the lanes and streets that are specifically dedicated to taxicabs to provide routing and Estimated Time of Arrival (ETA)s for vehicles identified as taxicabs.
The following geographical areas are currently supported:
- Brazil: Rio de Janeiro
- England: Birmingham, Coventry, London Metro Area, Manchester
- Israel: Tel Aviv
- Ireland: Dublin
- Russia: Moscow
- Scotland: Glasgow, Edinburgh
- Spain: Madrid, Barcelona
Stability and Bug fixes
- Fixed memory leaks
- Improved performance
Version 1.7.3 (September 18, 2018)
Bug fixes
NavigationView
may now transition fromonStart
directly toonStop
, this will no longer generate anIllegalStateException
.
Version 1.7.2 (August 16, 2018)
Features
- You can now show a directions list during navigation to display upcoming
turns for a ride. The directions list is provided through
DirectionsListView
. - You can now retrieve traffic status by using the
TimeAndDistance
class via thegetSeverity
method. - Vehicle license plate restrictions are now supported.
Bug fixes
- Occasional crashes in the Terms of Service dialog (manifesting as
IllegalStateException
s) have been fixed. - NullPointerException with a message such as "attempt to write to field ... on a null object reference" has been fixed.
- Resource identifiers in R.txt (previously all 0x1) now have the correct values.
Version 1.6.2 (July 16, 2018)
Bug fixes
- Fixed a NullPointerException in
AccessibilityStateUtils.getAccessibilityState()
.
Version 1.6.0 (May 10, 2018)
Bug fixes
- Fixed a bug that caused incorrect ETA callouts on journey legs and alternate routes.
- Fixed a NullPointerException when the latitude and/or longitude values for
a location were
null
. - Fixed a bug that prevented the map from loading if the ToS dialogue was accepted while offline.
- Introduced a workaround for an Android OS 7.0 LocationManager bug that would result in an NPE in Navigation SDK.
Version 1.5.0 (March 26, 2018)
Features
- Night mode: You can now set navigation to use the night mode theme. You can programmatically enable or disable night mode, or let the Navigation SDK automatically toggle the theme based on time of day.
- Two-Wheeler travel mode (Beta): You can now set the travel mode to
TWO-WHEELER
to get motorcycle and scooter routes. This feature is currently only available in India and Indonesia. - Speed limits: You can now programmatically show or hide the speed limit icon (the icon only appears in locations where reliable speed limit data is available).
- Custom map overlay controls: You can use custom map overlay controls to position UI elements dynamically while navigating.
- The
getNavigator()
call now accepts an Application context so that it can be called from a service.
Bug fixes
- Several text layout issues in the Terms of Service dialog were addressed to improve the display for right-to-left languages.
Version 1.3.4 (January 24, 2018)
- Fixed bug that caused
clearDestinations
to sometimes fail to clear the previous route
Version 1.3.3 (December 18, 2017)
- Made the
CameraArbitrator
class thread-safe since it's used on both the UI and render threads; - Don't throw an NPE if events for
CompassButtonController
arrive afteronDestroy()
has been called; - Add null checks for NavigationApi's public methods. SDK will throw NPE closest to the developer's code.
Version 1.3.2 (November 30, 2017)
- Fixed crash when network errors occur.
Version 1.3.1 (November 14, 2017)
- Fixed pop-up turn-by-turn navigation notifications on Android 8.0 Oreo (API level 26) and over.
- Fixed an issue where directions were not visible if requested before
creating a
NavigationView
orNavigationFragment
.
Version 1.3 (November 7, 2017)
- Added an
onTrimMemory()
method toNavigationView
. This method should be called by the containing activity. Navigator.setDestinations()
will now return aLOCATION_UNKNOWN
status if a location fix could not be found within the specified timeout. The timeout can be set usingRoutingOptions.locationTimeoutMs()
.- Anchor points for custom marker images can now be set using
MarkerOptions.anchor()
. NavigationMap
now exposes aProjection
object which can be used to get the visible lat/lng bounds of the map with padding taken into account.- Pop-up turn-by-turn navigation notifications can now be disabled using
Navigator.setHeadsUpNotificationEnabled()
. - The re-center button now offers an on-clicked listener. This can be set using
the
setOnRecenterButtonClickedListener()
method onNavigationView
,NavigationFragment
andSupportNavigationFragment
.
Version 1.2.6 (October 25, 2017)
- Fixed a NullPointerException that could happen if the navigation service was automatically recreated by the OS.
NavigationView
no longer throws an exception if certain lifecycle methods are called in an incorrect order, e.g. consecutive calls toonStart()
oronResume()
. Instead, a warning message is logged.
Version 1.2.5 (October 19, 2017)
- Added some better tile cache management to keep memory usage under control.
- Fixed a crash that could happen if
Navigator.setDestinations()
was called before creating aNavigationView
orNavigationFragment
.
Version 1.2.4 (October 11, 2017)
- Fixed a memory leak that could occur when creating multiple NavigationViews without a Navigator being present.
Version 1.2.3 (October 4, 2017)
- Fixed a lifecycle bug which sometimes caused the my-location marker to disappear.
- Fixed another instance where pickup and dropoff events could get lost.
Version 1.2.2 (September 27, 2017)
- Latency improvements to speed up API initialization and calls to
Navigator.setDestinations
.
Version 1.2.1 (September 20, 2017)
- Added
android:largeHeap="true"
to the library manifest. This reduces the frequency of OutOfMemoryErrors and is required for a reliable navigation experience. - Improved the reliability of recording pickup and dropoff events.
Version 1.2 (September 1, 2017)
- When the device orientation isn't known, the map now appears in a centered north-up overview mode and displays a circular my-location marker. This is especially useful at the start of the journey, to help users orient themselves by conveying that the device doesn't yet have a good enough idea which way it's facing.
- The traffic incident card has a new design and appears at the bottom of the map instead of its previous position at the top.
- Updated location listening to ensure it works as intended in Android 8.0 Oreo (API level 26).
- Fixed a bug where destination markers were rendered differently in navigation mode and non-navigation mode.
Version 1.1.2 (September 16, 2017)
- Improved the reliability of recording pickup and dropoff events.
Version 1.1.1 (August 24, 2017)
- Fixed an IllegalStateException that sometimes occurred when rerouting with no network connection.
- Fixed a bug where the map styling was different before and after calling
Navigator.setDestinations()
.
Version 1.1 (July 31, 2017)
- Fixed a bug where the
RoadSnappedLocationListener
sometimes didn't work when the app was sent to the background. - Fixed a camera bug when starting/stopping guidance.
- Fixed a bug in
Simulator.unsetUserLocation()
where the location wasn't being properly reset.
Version 1.0 (July 5, 2017)
- Launch of the Navigation SDK.