Release Notes

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 in NavigationView.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 a Fragment 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 in NavigationView.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 and StatusListener.

  • 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 the onLocationChange 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

Stability and bug fixes

  • Deprecated NavigationApi.cleanUp method due to unwanted side effects like NullPointerExceptions leading to crashes.

  • Deprecated Waypoint.fromLatLng() and Waypoint.fromPlaceId() in favor of Waypoint.builder().

  • Deprecated the AddressListener class, contained in the NavigationTransactionRecorder, 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() in RoadSnappedLocationProvider) 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 to NavigationView.onCreate.

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 the setCustomControl 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 the buildscript 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 from onStart directly to onStop, this will no longer generate an IllegalStateException.

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 the getSeverity method.
  • Vehicle license plate restrictions are now supported.

Bug fixes

  • Occasional crashes in the Terms of Service dialog (manifesting as IllegalStateExceptions) 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 after onDestroy() 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 or NavigationFragment.

Version 1.3 (November 7, 2017)

  • Added an onTrimMemory() method to NavigationView. This method should be called by the containing activity.
  • Navigator.setDestinations() will now return a LOCATION_UNKNOWN status if a location fix could not be found within the specified timeout. The timeout can be set using RoutingOptions.locationTimeoutMs().
  • Anchor points for custom marker images can now be set using MarkerOptions.anchor().
  • NavigationMap now exposes a Projection 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 on NavigationView, NavigationFragment and SupportNavigationFragment.

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 to onStart() or onResume(). 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 a NavigationView or NavigationFragment.

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.