Skip to content

Commit d22ed47

Browse files
authored
feat!: upgrade Android SDK to 7.0.0 (#481)
Breaking change: Adds new enum value RouteStatus.DUPLICATE_WAYPOINTS_ERROR
1 parent 366e0e6 commit d22ed47

File tree

10 files changed

+99
-217
lines changed

10 files changed

+99
-217
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
### Features
2121

2222
* support latest rn versions ([#467](https://github.com/googlemaps/react-native-navigation-sdk/issues/467)) ([2b69764](https://github.com/googlemaps/react-native-navigation-sdk/commit/2b69764462c97a34ec14228410c4de7e189d2ee3))
23-
* upgrade to latest Android SDK 10.3.0 ([#470](https://github.com/googlemaps/react-native-navigation-sdk/issues/470)) ([85f678a](https://github.com/googlemaps/react-native-navigation-sdk/commit/85f678abd858e1e6f5fd1cb0f1d3fb54dd36d13b))
23+
* upgrade to latest iOS SDK 10.3.0 ([#470](https://github.com/googlemaps/react-native-navigation-sdk/issues/470)) ([85f678a](https://github.com/googlemaps/react-native-navigation-sdk/commit/85f678abd858e1e6f5fd1cb0f1d3fb54dd36d13b))
2424

2525
## [0.10.0](https://github.com/googlemaps/react-native-navigation-sdk/compare/v0.9.3...v0.10.0) (2025-08-11)
2626

android/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ android {
4848

4949
defaultConfig {
5050
minSdkVersion 24
51-
targetSdkVersion 34
51+
targetSdkVersion 36
5252
}
5353

5454
buildFeatures {
@@ -82,6 +82,6 @@ dependencies {
8282
implementation "androidx.car.app:app:1.4.0"
8383
implementation "androidx.car.app:app-projected:1.4.0"
8484
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
85-
implementation "com.google.android.libraries.navigation:navigation:6.3.1"
85+
implementation "com.google.android.libraries.navigation:navigation:7.0.0"
8686
api 'com.google.guava:guava:31.0.1-android'
8787
}

android/src/main/java/com/google/android/react/navsdk/NavModule.java

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -459,13 +459,11 @@ public void setDestinations(
459459
pendingRoute = mNavigator.setDestinations(mWaypoints);
460460
}
461461

462-
setOnResultListener(
463-
new IRouteStatusResult() {
464-
@Override
465-
public void onResult(Navigator.RouteStatus code) {
466-
sendCommandToReactNative("onRouteStatusResult", code.toString());
467-
}
468-
});
462+
if (pendingRoute != null) {
463+
// Set an action to perform when a route is determined to the destination
464+
pendingRoute.setOnResultListener(
465+
code -> sendCommandToReactNative("onRouteStatusResult", code.toString()));
466+
}
469467
}
470468

471469
@ReactMethod
@@ -483,18 +481,6 @@ public void continueToNextDestination() {
483481
}
484482
}
485483

486-
private void setOnResultListener(IRouteStatusResult listener) {
487-
// Set an action to perform when a route is determined to the destination
488-
if (pendingRoute != null)
489-
pendingRoute.setOnResultListener(
490-
new ListenableResultFuture.OnResultListener<Navigator.RouteStatus>() {
491-
@Override
492-
public void onResult(Navigator.RouteStatus code) {
493-
listener.onResult(code);
494-
}
495-
});
496-
}
497-
498484
@ReactMethod
499485
public void startGuidance() {
500486
if (mWaypoints.isEmpty()) {
@@ -844,8 +830,4 @@ public void onHostPause() {}
844830

845831
@Override
846832
public void onHostDestroy() {}
847-
848-
private interface IRouteStatusResult {
849-
void onResult(Navigator.RouteStatus code);
850-
}
851833
}

android/src/main/java/com/google/android/react/navsdk/ObjectTranslationUtil.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,18 @@ public static DisplayOptions getDisplayOptionsFromMap(Map map) {
113113
options.hideDestinationMarkers(!CollectionUtil.getBool("showDestinationMarkers", map, true));
114114
}
115115

116+
// Note: showStopSigns and showTrafficLights are deprecated in Navigation SDK 7.0.0
117+
// and now default to true. These will be removed in SDK 8.0.0
116118
if (map.containsKey("showStopSigns")) {
117-
options.showStopSigns(CollectionUtil.getBool("showStopSigns", map, false));
119+
boolean showStopSigns = CollectionUtil.getBool("showStopSigns", map, true);
120+
//noinspection deprecation
121+
options.showStopSigns(showStopSigns);
118122
}
119123

120124
if (map.containsKey("showTrafficLights")) {
121-
options.showTrafficLights(CollectionUtil.getBool("showTrafficLights", map, false));
125+
boolean showTrafficLights = CollectionUtil.getBool("showTrafficLights", map, true);
126+
//noinspection deprecation
127+
options.showTrafficLights(showTrafficLights);
122128
}
123129

124130
return options;

example/android/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ dependencies {
147147
implementation "androidx.car.app:app-projected:1.4.0"
148148

149149
// Include the Google Navigation SDK.
150-
implementation 'com.google.android.libraries.navigation:navigation:6.3.1'
150+
implementation 'com.google.android.libraries.navigation:navigation:7.0.0'
151151
}
152152

153153
secrets {

example/src/screens/MultipleMapsScreen.tsx

Lines changed: 37 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,6 @@ const MultipleMapsScreen = () => {
8484
console.log('mapViewController1 changed', mapViewController1);
8585
}, [mapViewController1]);
8686

87-
const onRouteChanged = useCallback(() => {
88-
showSnackbar('Route Changed');
89-
}, []);
90-
9187
const onArrival = useCallback(
9288
(event: ArrivalEvent) => {
9389
if (event.isFinalDestination) {
@@ -104,10 +100,6 @@ const MultipleMapsScreen = () => {
104100
[navigationController]
105101
);
106102

107-
const onTrafficUpdated = useCallback(() => {
108-
showSnackbar('Traffic Updated');
109-
}, []);
110-
111103
const onNavigationReady = useCallback(async () => {
112104
if (navigationViewController1 != null) {
113105
await navigationViewController1.setNavigationUIEnabled(true);
@@ -128,38 +120,6 @@ const MultipleMapsScreen = () => {
128120
[]
129121
);
130122

131-
const onStartGuidance = useCallback(() => {
132-
showSnackbar('Start Guidance');
133-
}, []);
134-
135-
const onRouteStatusOk = useCallback(() => {
136-
showSnackbar('Route created');
137-
}, []);
138-
139-
const onRouteCancelled = useCallback(() => {
140-
showSnackbar('Error: Route Cancelled');
141-
}, []);
142-
143-
const onNoRouteFound = useCallback(() => {
144-
showSnackbar('Error: No Route Found');
145-
}, []);
146-
147-
const onNetworkError = useCallback(() => {
148-
showSnackbar('Error: Network Error');
149-
}, []);
150-
151-
const onStartingGuidanceError = useCallback(() => {
152-
showSnackbar('Error: Starting Guidance Error');
153-
}, []);
154-
155-
const onLocationDisabled = useCallback(() => {
156-
showSnackbar('Error: Location Disabled');
157-
}, []);
158-
159-
const onLocationUnknown = useCallback(() => {
160-
showSnackbar('Error: Location Unknown');
161-
}, []);
162-
163123
const onLocationChanged = useCallback((location: Location) => {
164124
console.log('onLocationChanged: ', location);
165125
}, []);
@@ -175,66 +135,55 @@ const MultipleMapsScreen = () => {
175135
console.log('onRemainingTimeOrDistanceChanged', currentTimeAndDistance);
176136
}, [navigationController]);
177137

178-
const onRouteStatusResult = useCallback(
179-
(routeStatus: RouteStatus) => {
180-
switch (routeStatus) {
181-
case RouteStatus.OK:
182-
onRouteStatusOk();
183-
break;
184-
case RouteStatus.ROUTE_CANCELED:
185-
onRouteCancelled();
186-
break;
187-
case RouteStatus.NO_ROUTE_FOUND:
188-
onNoRouteFound();
189-
break;
190-
case RouteStatus.NETWORK_ERROR:
191-
onNetworkError();
192-
break;
193-
case RouteStatus.LOCATION_DISABLED:
194-
onLocationDisabled();
195-
break;
196-
case RouteStatus.LOCATION_UNKNOWN:
197-
onLocationUnknown();
198-
break;
199-
default:
200-
console.log('routeStatus: ' + routeStatus);
201-
onStartingGuidanceError();
202-
}
203-
},
204-
[
205-
onRouteStatusOk,
206-
onRouteCancelled,
207-
onNoRouteFound,
208-
onNetworkError,
209-
onLocationDisabled,
210-
onLocationUnknown,
211-
onStartingGuidanceError,
212-
]
213-
);
138+
const onRouteStatusResult = useCallback((routeStatus: RouteStatus) => {
139+
switch (routeStatus) {
140+
case RouteStatus.OK:
141+
showSnackbar('Route created');
142+
break;
143+
case RouteStatus.ROUTE_CANCELED:
144+
showSnackbar('Error: Route Cancelled');
145+
break;
146+
case RouteStatus.NO_ROUTE_FOUND:
147+
showSnackbar('Error: No Route Found');
148+
break;
149+
case RouteStatus.NETWORK_ERROR:
150+
showSnackbar('Error: Network Error');
151+
break;
152+
case RouteStatus.LOCATION_DISABLED:
153+
showSnackbar('Error: Location Disabled');
154+
break;
155+
case RouteStatus.LOCATION_UNKNOWN:
156+
showSnackbar('Error: Location Unknown');
157+
break;
158+
case RouteStatus.DUPLICATE_WAYPOINTS_ERROR:
159+
showSnackbar('Error: Consecutive duplicate waypoints are not allowed');
160+
break;
161+
default:
162+
console.log('routeStatus: ' + routeStatus);
163+
showSnackbar('Error: Starting Guidance Error');
164+
}
165+
}, []);
214166

215167
const navigationCallbacks: NavigationCallbacks = useMemo(
216168
() => ({
217-
onRouteChanged,
169+
onRouteChanged: () => showSnackbar('Route Changed'),
218170
onArrival,
219171
onNavigationReady,
220172
onNavigationInitError,
221173
onLocationChanged,
222174
onRawLocationChanged,
223-
onTrafficUpdated,
175+
onTrafficUpdated: () => showSnackbar('Traffic Updated'),
224176
onRouteStatusResult,
225-
onStartGuidance,
177+
onStartGuidance: () => showSnackbar('Start Guidance'),
226178
onRemainingTimeOrDistanceChanged,
227179
}),
228180
[
229-
onRouteChanged,
230181
onArrival,
231182
onNavigationReady,
232183
onNavigationInitError,
233184
onLocationChanged,
234185
onRawLocationChanged,
235-
onTrafficUpdated,
236186
onRouteStatusResult,
237-
onStartGuidance,
238187
onRemainingTimeOrDistanceChanged,
239188
]
240189
);
@@ -260,17 +209,17 @@ const MultipleMapsScreen = () => {
260209
console.log('onRecenterButtonClick');
261210
}, []);
262211

263-
const onShowNavControlsClick = useCallback(() => {
212+
const onShowNavControlsClick = () => {
264213
setOverlayType(OverlayType.NavControls);
265-
}, []);
214+
};
266215

267-
const onShowMapsControlsClick1 = useCallback(() => {
216+
const onShowMapsControlsClick1 = () => {
268217
setOverlayType(OverlayType.MapControls1);
269-
}, []);
218+
};
270219

271-
const onShowMapsControlsClick2 = useCallback(() => {
220+
const onShowMapsControlsClick2 = () => {
272221
setOverlayType(OverlayType.MapControls2);
273-
}, []);
222+
};
274223

275224
const navigationViewCallbacks: NavigationViewCallbacks = useMemo(
276225
() => ({

0 commit comments

Comments
 (0)