The Navigation SDK for Android adds navigation features to the
Maps SDK for Android. If your Google Maps-powered Android application
needs navigation features, it must depend on the Navigation SDK for Android.

That said, most functions in the Maps SDK for Android behave the same in
the Navigation SDK for Android. You access them using the same
`com.google.android.gms.maps` package, no matter which SDK dependency you use.
This means that, if your app previously depended on the
Maps SDK for Android, you can change its dependency to the
Navigation SDK for Android without affecting the existing functionality of your app, with
two notable exceptions:

- APIs that throw an exception.
- APIs that don't function in the NavSDK and have no impact when called.

These exceptions are described below.

## APIs that throw an exception

The following function throws an exception if your application enables it:

- [LiteMode](https://developers.google.com/maps/documentation/navigation/android-sdk/reference/com/google/android/gms/maps/GoogleMapOptions#liteMode(boolean))

## APIs with no functionality in Navigation SDK

The following APIs have no functionality in the Navigation SDK, but also have no
impact if your code calls them. They fall into the following categories:

- APIs for wearable activity.
  - Enable [TBT feed](https://developers.google.com/maps/documentation/navigation/android-sdk/tbt-feed) instead if you want this functionality in the Navigation SDK for Android.
- Other APIs.

### APIs for wearables

[GoogleMapOptions.ambientEnabled(boolean enabled)](https://developers.google.com/maps/documentation/navigation/android-sdk/reference/com/google/android/gms/maps/GoogleMapOptions#ambientEnabled(boolean)) would
normally allow you to disable or enable [ambient mode](https://developers.google.com/maps/documentation/android-sdk/wear#ambient) for
wearable apps. Additionally,
[onEnterAmbient](https://developers.google.com/maps/documentation/navigation/android-sdk/reference/com/google/android/gms/maps/MapView#onEnterAmbient(android.os.Bundle))
and
[onExitAmbient](https://developers.google.com/maps/documentation/navigation/android-sdk/reference/com/google/android/gms/maps/MapView#onExitAmbient())
methods exist in [MapView](https://developers.google.com/maps/documentation/navigation/android-sdk/reference/com/google/android/gms/maps/MapView) and [MapFragment](https://developers.google.com/maps/documentation/navigation/android-sdk/reference/com/google/android/gms/maps/MapFragment), but have
no impact when called. For wearables, use the [TBT feed](https://developers.google.com/maps/documentation/navigation/android-sdk/tbt-feed) instead.

### Other APIs

- [Setting a custom LocationSource](https://developers.google.com/maps/documentation/navigation/android-sdk/reference/com/google/android/gms/maps/GoogleMap#setLocationSource(com.google.android.gms.maps.LocationSource)) does nothing in the NavSDK.
- All [MapsInitializer](https://developers.google.com/maps/documentation/navigation/android-sdk/reference/com/google/android/gms/maps/MapsInitializer) APIs.
- [RuntimeRemoteException](https://developers.google.com/maps/documentation/navigation/android-sdk/reference/com/google/android/gms/maps/model/RuntimeRemoteException).

## APIs that are only intended for use by Mobility Services customers


There are several APIs in the Navigation SDK that are only intended for use by [Mobility Services](https://developers.google.com/maps/documentation/transportation-logistics/mobility) customers, who are billed by Google on a per-transaction basis. If you are not a Mobility Services customer, the following methods are no-ops:

- [`NavigationTransactionRecorder.pickup()`](https://developers.google.com/maps/documentation/navigation/android-sdk/reference/com/google/android/libraries/navigation/NavigationTransactionRecorder#pickup(com.google.android.libraries.navigation.Waypoint,%20java.util.List%3Cjava.lang.String%3E))
- [`NavigationTransactionRecorder.dropoff()`](https://developers.google.com/maps/documentation/navigation/android-sdk/reference/com/google/android/libraries/navigation/NavigationTransactionRecorder#dropoff(com.google.android.libraries.navigation.Waypoint,%20java.util.List%3Cjava.lang.String%3E))
- [`NavigationTransactionRecorder.generatedTransactionId()`](https://developers.google.com/maps/documentation/navigation/android-sdk/reference/com/google/android/libraries/navigation/NavigationTransactionRecorder#public-static-string-generatetransactionid)
- [`Navigator.fetchRouteInfo()`](https://developers.google.com/maps/documentation/navigation/android-sdk/reference/com/google/android/libraries/navigation/Navigator#public-abstract-listenableresultfuturerouteinfo-fetchrouteinfo-waypoint-waypoint,-routingoptions-routingoptions)
- [`Navigator.setTransactionIds()`](https://developers.google.com/maps/documentation/navigation/android-sdk/reference/com/google/android/libraries/navigation/Navigator#public-abstract-void-settransactionids-liststring-transactionids)