Releases: mapbox/mapbox-navigation-android
Mapbox Navigation SDK v0.23.0
Release Notes
Important Note: With this release, you must include the following snippet in your project’s build.gradle
:
repositories {
maven { url 'https://mapbox.bintray.com/mapbox' }
}
This will ensure the mapbox
dependency is properly downloaded. We will be adding a snippet regarding this in the repo README
as well.
This release breaks contains API breaking changes. Please consult this migration guide for the necessary updates required.
Core Navigation libandroid-navigation
- We added a
RouteProgressState
that gives information about when a user has arrived, as well as a lot of other information given to us via theNavigator
RouteState
.- Example usage to detect when a user has arrived at the end of the given
RouteLeg
:
- Example usage to detect when a user has arrived at the end of the given
@Override
public void onProgressChange(Location location, RouteProgress routeProgress) {
Integer currentState = routeProgress.currentState();
if (currentState != null && currentState == RouteProgressState.ROUTE_ARRIVED) {
// Arrived at the end of the leg!
}
}
- Check out
RouteProgressState
to see the different types of state events you can receive.
Navigation UI libandroid-navigation-ui
- We added an API that will allow custom map padding for the
NavigationView
. This is useful for scenarios where you would like to adjust the location icon’s position on the screen (like centered for an arial view):
// To center the location icon
int[] customPadding = {0, 0, 0, 0};
navigationView.retrieveNavigationMapboxMap().updateLocationIconWith(customPadding);
- We added APIs to
InstructionView
andNavigationView
to enable / disable theNavigationAlertView
(enabled by default).
// To disable the NavigationAlertView
navigationView.retrieveAlertView().updateEnabled(false);
- We added an
NavigationView#initialize
method that takes aCameraPosition
to address the poor “fly-in” UX behavior (from starting theMapView
at a world-view camera position):
CameraPosition initialPosition = new CameraPosition.Builder()
.target(new LatLng(ORIGIN.latitude(), ORIGIN.longitude()))
.zoom(INITIAL_ZOOM)
.build();
navigationView.initialize(this, initialPosition);
Changelog:
- Add RouteProgressState to RouteProgress for current Navigator information #1502
- Remove LocationValidator and force last Location if found #1498
- Update MapRouteProgressChangeListener to be aware of route visibility #1482
- Remove MapboxNavigationOptions ignored by Navigator #1500
- Check for valid geocoding response in ExamplePresenter #1499
- Better clarify the Mapbox Navigator dependency #1496
- Add example test Activity for Navigation Test Application #1317
- Bump mapbox-navigation-native version to 3.3.1 #1495
- Add Mapbox Navigator TOS to the license #1494
- Bump Maps SDK and Events versions #1493
- Resume simulation for multi leg routes #1490
- Remove dynamic padding way name adjustment for MapWayname #1473
- Remove unnecessary force first location update from route (origin) #1488
- Add CameraPosition option for initializing NavigationView #1483
- Rebuild RemoteViews for MapboxNavigationNotification on each update #1474
- Update time remaining TextView to auto-size for longer durations #1479
- Fix mock location generation in ReplayRouteLocationConverter #1476
- Update Maps SDK to 6.6.2 #1475
- Bump mapbox-navigation-native version to 3.2.1 #1470
- Allow access to AlertView and the ability to enable or disable #1466
- Update Transifex to latest German translations #1476
Mapbox Navigation SDK v0.22.0
Release Notes
Important Note: With this release, you must include the following snippet in your project’s build.gradle
:
repositories {
maven { url 'https://mapbox.bintray.com/mapbox' }
}
This will ensure the mapbox
dependency is properly downloaded.
SEMVER: This release breaks contains API breaking changes. Please consult this migration guide for the necessary updates required.
Core Navigation libandroid-navigation
- The SDK will now provide more accurate snapped locations. We previously saw that the user location on the map would “lag” behind the location of user in real life. We have tweaked some parameters around our animations and snapped location projection to help address this user experience.
- We made some major improvements to our location projection through tunnels. Users should see themselves progress through tunnels more smoothly than before.
Navigation UI libandroid-navigation-ui
- We added route shield support for more pixel densities and thus more devices.
- We added route shield support for the “sub” banner that shows at the bottom of the
InstructionView
when the upcoming step is shorter. - Improved way name query performance and filtering. Previously, the way name (pill below the user location icon) would update too eagerly when crossing though intersections. We’ve added a filter to harden this logic, ensuring the way name updates when actually on a new street the user is traveling along.
Changelog:
- Replace LocationLayerPlugin with LocationComponent #1438
- Makes gradle.properties license listing consisting with repo #1456
- Rebuild MapboxNavigationNotification for each update #1455
- Update progruard rules to ensure Navigator is kept in release builds #1454
- Adjust InstructionView primary and secondary loading logic #1451
- Correct iconSize expression #1453
- Update InstructionView to consume turn lane data from sub BannerText #1440
- Fix MapWayname ProgressChangeListener leak #1442
- Add base HistoryActivity for testing #1447
- Fix sub BannerText loading shields for first time #1446
- make use of fixed duration for non tracking statuses #1437
- Check for valid index before updating steps in NavigationRouteProcessor #1435
- Update UrlDensityMap for more screen densities #1436
- Update Transifex latest translations #1433
- Update Maps SDK 6.6.1 and Events 3.4.0 #1434
- Stop scrolling before notifying InstructionListAdapter #1432
- Add FusedLocationEngine to Test App #1373
- Check for null maneuver type in ManeuverView #1429
- Revert Shield URL density additions #1428
- Add no value checks for FixLocation in MapboxNavigator #1426
- Show turn lanes when sub BannerText is not present #1427
- Log TimeFormatter error in place of IllegalArgumentException #1425
- Filter queried Features for map way name #1156
- Add tunnels functionality #1392
- Load sub-banner Shield Images #1418
- Fix shields not showing up for some display densities #1414
- Bump Android Gradle plugin version to 3.2.1 #1415
- Added nav-native ETAs #1412
- Delay start navigation until route received in MockNavigationActivity #1411
- Update Maps v6.6.0 release #1310
- Consume Sub BannerText in InstructionView #1408
- Fix component navigation activity camera issues #1407
Mapbox Navigation SDK v0.21.0
Release Notes
Important Note: With this release, you must include the following snippet in your project’s build.gradle
:
repositories {
maven { url 'https://mapbox.bintray.com/mapbox' }
}
This will ensure the mapbox
dependency is properly downloaded. We will be adding a snippet regarding this in the repo README
as well.
Navigation UI libandroid-navigation-ui
-
Improved
NavigationCamera
logic to be synced with the navigation puck. -
Added
OnCameraTrackingChangedListener
toNavigationMapboxMap
which now allows users to interact with the map, while still tracking, setting new zoom levels: -
Fix 🐛 when adding click listeners to the
RecenterButton
Changelog:
- Add CustomNavigationNotification notification channel #1388
- Add OnCameraTrackingChangedListener to NavigationMapboxMap #1386
- Bump mapbox-android-plugin-locationlayer version to 0.10.0 #1382
- Camera tracking modes selection with GPS and North as options #1377
- Match min and max pitch values with iOS #1379
- Migrate camera tracking logic to the LocationLayerPlugin #1372
- CP: Use tracking animation multiplier 2x #1347
- Fix multi on click listener NPE in recenter button #1374
Mapbox Navigation SDK v0.20.0
Release Notes
Important Note: With this release, you must include the following snippet in your project’s build.gradle
:
repositories {
maven { url 'https://mapbox.bintray.com/mapbox' }
}
This will ensure the mapbox
dependency is properly downloaded. We will be adding a snippet regarding this in the repo README
and in the Android docs site as well.
Navigation Core libandroid-navigation
- Integration with Mapbox
Navigator
- Mapbox Navigator is a C++ lib that holds logic for route following and offline navigation
- Integration of history APIs that can be used to record route information in a
.json
, helping debug different route behaviors.
Navigation UI libandroid-navigation-ui
- We updated the
InstructionView
APIs for when it is used as a separateView
from theNavigationView
. We did this so the banner instructions are only updated when they need to be (rather than every time aRouteProgress
object is provided):
@Override
public void onProgressChange(Location location, RouteProgress routeProgress) {
instructionView.updateDistanceWith(routeProgress);
}
@Override
public void onMilestoneEvent(RouteProgress routeProgress, String instruction, Milestone milestone) {
instructionView.updateBannerInstructionsWith(milestone);
}
- Added
NavigationMapboxMap
APIs for updating multipleDirectionsRoute
objects, as well as setting a listener for when alternatives are clicked / hiding and showing alternatives. - Added
NavigationMapboxMap
API for updating the location layerRenderMode
. - Fixed 🐛 related to adding click listeners to the
InstructionView
SoundButton
andFeedbackButton
.
Changelog:
- Update Navigator to 3.1.3 #1364
- Delay adding InstructionView default click listeners until subscribed #1362
- Do not remove OffRouteListeners onArrival #1363
- Refine InstructionView update APIs #1355
- Puck Gymnastics #1354
- Fix MultiOnClickListener NPE #1353
- Ignore null locations #1352
- Update nav native to 3.0.1 #1348
- Add separate APIs for updating InstructionView #1340
- Create MultiOnClickListener before View is attached #1345
- Add navigator history functionality #1342
- Navigation native #1336
- Ignore navigation view orientation test #1331
- Add NavigationMapboxMap APIs for showing multiple routes on map #1320
- Add NavigationMapboxMap to set LocationLayer RenderMode #1319
- Update Build Tools 28.0.3 #1313
- Add default roundabout angle value for ManeuverView #1264
Mapbox Navigation SDK v0.20.0-beta.1
Pre-release beta of 0.20.0
Mapbox Navigation SDK v0.19.0
Release Notes
Navigation Core libandroid-navigation
- Simpler 'will voice' API
- Custom LocationEngine now allowed from NavigationViewOptions
- Location dispatcher has been added to replay raw GPS traces
Navigation UI libandroid-navigation-ui
- onNavigationStopped callback has been added for NavigationNotification
- Custom rounding increments have been added for formatting distance
Changelog:
- Fix route requests that include approaches and fix calculate remaining waypoints and waypoint names logic #1303
- Added ability to hide/add listeners to buttons/alert views #1251
- Allow custom LocationEngine from NavigationViewOptions #1257
- Add debug logging support back #1298
- Make last location from replay route location engine null (by default) until the first location is received or assigned explicitly #1296
- Do not update MockLocationEngine route on rotation #1289
- Fix mock navigation activity leak and fix location puck flying from current location to mock #1294
- Add location dispatcher to replay raw GPS traces #1039
- Remove sonarqube integration #1290
- Update Maps SDK to 6.5.0 and Events to 3.2.0 #1241
- Add onNavigationStopped callback for NavigationNotification #1283
- Added custom rounding increments for formatting distance #1231
- Simplify will voice api #1281
- Update RouteEngine for NavigationView duplicate starts #1277
- Fix recenter problem with Remove onMoveListener in onDestroy #1263
- Update Milestone javadoc to explain ignored trigger behavior #1269
- Fix route requests that include waypoint names #1260
- Do not allow multiple ViewModel subscriptions in NavigationView #1275
- Update Transfiex Translations #1258
- Do not add Fragments to backstack in FragmentNavigationActivity #1256
- bump location layer plugin version to 0.8.1 #1252
- fix route leg progress current leg annotation javadoc broken link #1250
- Save and restore map state on rotation for way name and camera tracking #1215
- Add example with MapboxNavigation driving separate UI components #1219
- Update NavigationView to guard against duplicate initializations #1247
- Add NavigationViewOption for default or custom SpeechPlayer #1232
- Added Burmese, Finnish, Korean, Norwegian guidance
Mapbox Navigation SDK v0.18.0
Release Notes
Navigation Core libandroid-navigation
- Bug fixes and updates.
Navigation UI libandroid-navigation-ui
- Incidents ⛔️
- Updated Map styles to v4 with incident coverage 🎉
- Added toggles in
NavigationMapboxMap
for traffic and incident data
- Bug fixes.
Changelog:
- Add toggles in NavigationMapboxMap for traffic and incident data #1226
- Update Map styles to V4 with incident coverage #1234
- Add initialization logic for null RouteOptions #1229
- Reopen the app when clicking the whole notification #1221
- Update Maps SDK to 6.4.0 and Events to 3.1.5 #1220
- Do not scroll Instruction RecyclerView while animating #1214
- Only reset night mode for EmbeddedNavigationActivity when isFinishing #1213
- Add Boolean in MapboxSpeechPlayer to prevent IllegalStateException #1212
Mapbox Navigation SDK v0.17.0
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
andlocationVelocityInMetersPerSecondThreshold
options are not available anymore.
- Allow setting of accuracy threshold in
- Bug fixes and updates.
Navigation UI libandroid-navigation-ui
- Added APIs to the
NavigationView
that give access to theNavigationMapboxMap
andMapboxNavigation
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
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 theNavigationView
is still showing (previously, the view had to be destroyed to stop navigation). - Added
BannerInstructionListener
andSpeechAnnouncementListener
that can be added toNavigationViewOptions
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 setAppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO);
only if your device is currently following the system setting. - If using
NavigationView
within your ownActivity
the view will update based on whatever the current mode is in theActivity
.
- If using
MapboxNavigationNotification
(default notification provided by the SDK) layout updates and improvements.- 🐛 fix for re-initializing a
NavigationView
in aFragment
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
Pre-release beta of 0.16.0