Skip to content

Releases: mapbox/mapbox-navigation-android

Mapbox Navigation SDK v0.23.0

07 Nov 22:14
Compare
Choose a tag to compare

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 the Navigator RouteState.
    • Example usage to detect when a user has arrived at the end of the given RouteLeg:
@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 and NavigationView to enable / disable the NavigationAlertView (enabled by default).
// To disable the NavigationAlertView
navigationView.retrieveAlertView().updateEnabled(false);
  • We added an NavigationView#initialize method that takes a CameraPosition to address the poor “fly-in” UX behavior (from starting the MapView 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

24 Oct 20:37
0c98e0e
Compare
Choose a tag to compare

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

05 Oct 14:08
Compare
Choose a tag to compare

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.

    • Add NavigationCamera#updateCameraTrackingMode that will allow you to toggle between normal tracking and NAVIGATION_TRACKING_MODE_NORTH which will continue to track the user location, but with a bearing always set to zero.

  • Added OnCameraTrackingChangedListener to NavigationMapboxMap 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

01 Oct 02:16
Compare
Choose a tag to compare

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 separate View from the NavigationView. We did this so the banner instructions are only updated when they need to be (rather than every time a RouteProgress 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 multiple DirectionsRoute objects, as well as setting a listener for when alternatives are clicked / hiding and showing alternatives.
  • Added NavigationMapboxMap API for updating the location layer RenderMode.
  • Fixed 🐛 related to adding click listeners to the InstructionView SoundButton and FeedbackButton.

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

30 Sep 16:36
962942b
Compare
Choose a tag to compare
Pre-release

Pre-release beta of 0.20.0

Mapbox Navigation SDK v0.19.0

25 Sep 00:56
f5868ff
Compare
Choose a tag to compare

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

24 Aug 17:46
49e4a39
Compare
Choose a tag to compare

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

incidents

  • 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

10 Aug 23:01
9f55b59
Compare
Choose a tag to compare

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 and locationVelocityInMetersPerSecondThreshold options are not available anymore.
  • Bug fixes and updates.

Navigation UI libandroid-navigation-ui

  • Added APIs to the NavigationView that give access to the NavigationMapboxMap and MapboxNavigation 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

20 Jul 15:26
Compare
Choose a tag to compare

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 the NavigationView is still showing (previously, the view had to be destroyed to stop navigation).
  • Added BannerInstructionListener and SpeechAnnouncementListener that can be added to NavigationViewOptions 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 set AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO); only if your device is currently following the system setting.
    • If using NavigationView within your own Activity the view will update based on whatever the current mode is in the Activity.
  • MapboxNavigationNotification (default notification provided by the SDK) layout updates and improvements.
  • 🐛 fix for re-initializing a NavigationView in a Fragment 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

29 Jun 21:04
Compare
Choose a tag to compare

Pre-release beta of 0.16.0