Skip to content

Commit 6e0517a

Browse files
authored
[Android Auto] Remove MapboxNavigation from CarNavigationInfoObserver constructor (#6263)
* Remove dependencies from CarNavigationInfoObserver * simplify
1 parent 2703e3b commit 6e0517a

File tree

14 files changed

+550
-155
lines changed

14 files changed

+550
-155
lines changed

libnavui-androidauto/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Mapbox welcomes participation and contributions from everyone.
66
#### Features
77
#### Bug fixes and improvements
88
- Remove experimental from `MapboxCarNavigationManager` and showcase java. [#6292](https://github.com/mapbox/mapbox-navigation-android/pull/6292)
9+
- Removed `MapboxNavigation` from `CarNavigationInfoObserver` constructor, and rename to `CarNavigationInfoProvider`. Removed dependencies from `CarActiveGuidanceCarContext` that require `MapboxNavigation`. [#6224](https://github.com/mapbox/mapbox-navigation-android/pull/6224)
910

1011
## androidauto-v0.10.0 - Sep 9, 2022
1112
### Changelog

libnavui-androidauto/api/current.txt

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -56,22 +56,20 @@ package com.mapbox.androidauto.car {
5656
method public androidx.car.app.CarContext getCarContext();
5757
method public com.mapbox.androidauto.car.search.CarPlaceSearchOptions getCarPlaceSearchOptions();
5858
method public com.mapbox.androidauto.car.settings.CarSettingsStorage getCarSettingsStorage();
59-
method public com.mapbox.navigation.base.formatter.DistanceFormatter getDistanceFormatter();
59+
method @Deprecated public com.mapbox.navigation.base.formatter.DistanceFormatter getDistanceFormatter();
6060
method public com.mapbox.androidauto.car.feedback.core.CarFeedbackPollProvider getFeedbackPollProvider();
61-
method public com.mapbox.navigation.utils.internal.JobControl getJobControl();
62-
method public com.mapbox.navigation.ui.maneuver.api.MapboxManeuverApi getManeuverApi();
61+
method @Deprecated public com.mapbox.navigation.utils.internal.JobControl getJobControl();
6362
method public com.mapbox.maps.extension.androidauto.MapboxCarMap getMapboxCarMap();
64-
method public com.mapbox.navigation.core.MapboxNavigation getMapboxNavigation();
63+
method @Deprecated public com.mapbox.navigation.core.MapboxNavigation getMapboxNavigation();
6564
method public com.mapbox.androidauto.car.preview.CarRouteOptionsInterceptor getRouteOptionsInterceptor();
6665
method public kotlinx.coroutines.flow.MutableStateFlow<com.mapbox.androidauto.car.navigation.speedlimit.SpeedLimitOptions> getSpeedLimitOptions();
6766
property public final androidx.car.app.CarContext carContext;
6867
property public final com.mapbox.androidauto.car.search.CarPlaceSearchOptions carPlaceSearchOptions;
6968
property public final com.mapbox.androidauto.car.settings.CarSettingsStorage carSettingsStorage;
70-
property public final com.mapbox.navigation.base.formatter.DistanceFormatter distanceFormatter;
69+
property @Deprecated public final com.mapbox.navigation.base.formatter.DistanceFormatter distanceFormatter;
7170
property public final com.mapbox.androidauto.car.feedback.core.CarFeedbackPollProvider feedbackPollProvider;
72-
property public final com.mapbox.navigation.ui.maneuver.api.MapboxManeuverApi maneuverApi;
7371
property public final com.mapbox.maps.extension.androidauto.MapboxCarMap mapboxCarMap;
74-
property public final com.mapbox.navigation.core.MapboxNavigation mapboxNavigation;
72+
property @Deprecated public final com.mapbox.navigation.core.MapboxNavigation mapboxNavigation;
7573
property public final com.mapbox.androidauto.car.preview.CarRouteOptionsInterceptor routeOptionsInterceptor;
7674
property public final kotlinx.coroutines.flow.MutableStateFlow<com.mapbox.androidauto.car.navigation.speedlimit.SpeedLimitOptions> speedLimitOptions;
7775
}
@@ -324,19 +322,13 @@ package com.mapbox.androidauto.car.navigation {
324322
method public androidx.car.app.CarContext getCarContext();
325323
method public com.mapbox.navigation.base.formatter.DistanceFormatter getDistanceFormatter();
326324
method public com.mapbox.androidauto.car.MainCarContext getMainCarContext();
327-
method public com.mapbox.navigation.ui.maneuver.api.MapboxManeuverApi getManeuverApi();
328325
method public com.mapbox.maps.extension.androidauto.MapboxCarMap getMapboxCarMap();
329326
method public com.mapbox.navigation.core.MapboxNavigation getMapboxNavigation();
330-
method public com.mapbox.androidauto.car.navigation.CarNavigationInfoMapper getNavigationInfoMapper();
331-
method public com.mapbox.androidauto.car.navigation.CarNavigationEtaMapper getTripProgressMapper();
332327
property public final androidx.car.app.CarContext carContext;
333328
property public final com.mapbox.navigation.base.formatter.DistanceFormatter distanceFormatter;
334329
property public final com.mapbox.androidauto.car.MainCarContext mainCarContext;
335-
property public final com.mapbox.navigation.ui.maneuver.api.MapboxManeuverApi maneuverApi;
336330
property public final com.mapbox.maps.extension.androidauto.MapboxCarMap mapboxCarMap;
337331
property public final com.mapbox.navigation.core.MapboxNavigation mapboxNavigation;
338-
property public final com.mapbox.androidauto.car.navigation.CarNavigationInfoMapper navigationInfoMapper;
339-
property public final com.mapbox.androidauto.car.navigation.CarNavigationEtaMapper tripProgressMapper;
340332
}
341333

342334
public enum CarCameraMode {
@@ -380,23 +372,29 @@ package com.mapbox.androidauto.car.navigation {
380372

381373
public final class CarNavigationEtaMapper {
382374
ctor public CarNavigationEtaMapper(com.mapbox.androidauto.car.navigation.CarDistanceFormatter carDistanceFormatter, com.mapbox.navigation.ui.tripprogress.api.MapboxTripProgressApi tripProgressApi);
383-
method public androidx.car.app.navigation.model.TravelEstimate from(com.mapbox.navigation.base.trip.model.RouteProgress routeProgress);
375+
method public androidx.car.app.navigation.model.TravelEstimate getDestinationTravelEstimate(com.mapbox.navigation.base.trip.model.RouteProgress routeProgress);
376+
}
377+
378+
public final class CarNavigationInfo {
379+
method public androidx.car.app.navigation.model.TravelEstimate? getDestinationTravelEstimate();
380+
method public androidx.car.app.navigation.model.NavigationTemplate.NavigationInfo? getNavigationInfo();
381+
property public final androidx.car.app.navigation.model.TravelEstimate? destinationTravelEstimate;
382+
property public final androidx.car.app.navigation.model.NavigationTemplate.NavigationInfo? navigationInfo;
384383
}
385384

386385
public final class CarNavigationInfoMapper {
387386
ctor public CarNavigationInfoMapper(android.content.Context context, com.mapbox.androidauto.car.navigation.maneuver.CarManeuverInstructionRenderer carManeuverInstructionRenderer, com.mapbox.androidauto.car.navigation.maneuver.CarManeuverIconRenderer carManeuverIconRenderer, com.mapbox.androidauto.car.navigation.lanes.CarLanesImageRenderer carLanesImageGenerator, com.mapbox.androidauto.car.navigation.CarDistanceFormatter carDistanceFormatter);
388387
method public androidx.car.app.navigation.model.NavigationTemplate.NavigationInfo? mapNavigationInfo(com.mapbox.bindgen.Expected<com.mapbox.navigation.ui.maneuver.model.ManeuverError,java.util.List<com.mapbox.navigation.ui.maneuver.model.Maneuver>> expectedManeuvers, java.util.List<? extends com.mapbox.navigation.ui.shield.model.RouteShield> routeShields, com.mapbox.navigation.base.trip.model.RouteProgress routeProgress);
389388
}
390389

391-
public final class CarNavigationInfoObserver {
392-
ctor public CarNavigationInfoObserver(com.mapbox.androidauto.car.navigation.CarActiveGuidanceCarContext carActiveGuidanceCarContext);
393-
method public androidx.car.app.navigation.model.NavigationTemplate.NavigationInfo? getNavigationInfo();
394-
method public androidx.car.app.navigation.model.TravelEstimate? getTravelEstimateInfo();
395-
method public void setTravelEstimateInfo(androidx.car.app.navigation.model.TravelEstimate?);
396-
method public void start(kotlin.jvm.functions.Function0<kotlin.Unit> onNavigationInfoChanged);
397-
method public void stop();
398-
property public final androidx.car.app.navigation.model.NavigationTemplate.NavigationInfo? navigationInfo;
399-
property public final androidx.car.app.navigation.model.TravelEstimate? travelEstimateInfo;
390+
@com.mapbox.maps.MapboxExperimental public final class CarNavigationInfoProvider implements com.mapbox.maps.extension.androidauto.MapboxCarMapObserver {
391+
ctor public CarNavigationInfoProvider();
392+
method public kotlinx.coroutines.flow.StateFlow<com.mapbox.androidauto.car.navigation.CarNavigationInfo> getCarNavigationInfo();
393+
method public com.mapbox.androidauto.car.navigation.CarNavigationInfoProvider invalidateOnChange(androidx.car.app.Screen screen);
394+
method public void onAttached(com.mapbox.maps.extension.androidauto.MapboxCarMapSurface mapboxCarMapSurface);
395+
method public void onDetached(com.mapbox.maps.extension.androidauto.MapboxCarMapSurface mapboxCarMapSurface);
396+
method public androidx.car.app.navigation.model.NavigationTemplate.Builder setNavigationInfo(androidx.car.app.navigation.model.NavigationTemplate.Builder builder);
397+
property public final kotlinx.coroutines.flow.StateFlow<com.mapbox.androidauto.car.navigation.CarNavigationInfo> carNavigationInfo;
400398
}
401399

402400
public final class MapUserStyleObserver implements com.mapbox.maps.extension.androidauto.MapboxCarMapObserver {

libnavui-androidauto/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ dependencies {
6262
apply from: "${rootDir}/gradle/unit-testing-dependencies.gradle"
6363
testImplementation(project(':libtesting-utils'))
6464
testImplementation(dependenciesList.androidXArchCoreTesting)
65+
testImplementation(dependenciesList.androidXLifecycleTesting)
6566

6667
// Needed for the instrumentation tests in the androidTest module
6768
androidTestImplementation(dependenciesList.testRunner)

libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/MainCarContext.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import com.mapbox.navigation.base.formatter.DistanceFormatter
1212
import com.mapbox.navigation.core.MapboxNavigation
1313
import com.mapbox.navigation.core.MapboxNavigationProvider
1414
import com.mapbox.navigation.core.formatter.MapboxDistanceFormatter
15-
import com.mapbox.navigation.ui.maneuver.api.MapboxManeuverApi
1615
import com.mapbox.navigation.utils.internal.JobControl
1716
import kotlinx.coroutines.CoroutineScope
1817
import kotlinx.coroutines.Dispatchers
@@ -29,22 +28,21 @@ class MainCarContext(
2928
) {
3029
val carSettingsStorage = CarSettingsStorage(carContext)
3130

31+
@Deprecated(message = "This is being removed, replaced with MapboxNavigationApp")
3232
val mapboxNavigation: MapboxNavigation by lazy {
3333
MapboxNavigationProvider.retrieve()
3434
}
3535

36+
@Deprecated(message = "This is being removed. You can construct one using MapboxNavigationApp")
3637
val distanceFormatter: DistanceFormatter by lazy {
3738
MapboxDistanceFormatter(
3839
mapboxNavigation.navigationOptions.distanceFormatterOptions
3940
)
4041
}
4142

42-
val maneuverApi: MapboxManeuverApi by lazy {
43-
MapboxManeuverApi(distanceFormatter)
44-
}
45-
4643
val speedLimitOptions = MutableStateFlow(SpeedLimitOptions.Builder().build())
4744

45+
@Deprecated(message = "This will be removed")
4846
fun getJobControl(): JobControl {
4947
val supervisorJob = SupervisorJob()
5048
val scope = CoroutineScope(supervisorJob + Dispatchers.Main)

libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/navigation/ActiveGuidanceScreen.kt

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ class ActiveGuidanceScreen(
5252
alternativeCarCameraMode = CarCameraMode.OVERVIEW,
5353
)
5454
private val roadLabelSurfaceLayer = RoadLabelSurfaceLayer(carContext)
55-
private val carRouteProgressObserver = CarNavigationInfoObserver(carActiveGuidanceContext)
55+
private val navigationInfoProvider = CarNavigationInfoProvider()
56+
.invalidateOnChange(this)
5657
private val mapActionStripBuilder = MainMapActionStrip(this, carNavigationCamera)
5758

5859
private val arrivalObserver = object : ArrivalObserver {
@@ -108,6 +109,7 @@ class ActiveGuidanceScreen(
108109

109110
init {
110111
logAndroidAuto("ActiveGuidanceScreen constructor")
112+
111113
lifecycle.addObserver(object : DefaultLifecycleObserver {
112114

113115
override fun onCreate(owner: LifecycleOwner) {
@@ -126,9 +128,7 @@ class ActiveGuidanceScreen(
126128
)
127129
carActiveGuidanceContext.mapboxCarMap.registerObserver(carRouteLine)
128130
carActiveGuidanceContext.mapboxCarMap.registerObserver(surfaceListener)
129-
carRouteProgressObserver.start {
130-
invalidate()
131-
}
131+
carActiveGuidanceContext.mapboxCarMap.registerObserver(navigationInfoProvider)
132132
}
133133

134134
override fun onPause(owner: LifecycleOwner) {
@@ -140,7 +140,7 @@ class ActiveGuidanceScreen(
140140
carActiveGuidanceContext.mapboxCarMap.setGestureHandler(null)
141141
carActiveGuidanceContext.mapboxCarMap.unregisterObserver(carRouteLine)
142142
carActiveGuidanceContext.mapboxCarMap.unregisterObserver(surfaceListener)
143-
carRouteProgressObserver.stop()
143+
carActiveGuidanceContext.mapboxCarMap.unregisterObserver(navigationInfoProvider)
144144
}
145145

146146
override fun onDestroy(owner: LifecycleOwner) {
@@ -171,20 +171,13 @@ class ActiveGuidanceScreen(
171171
}.build()
172172
)
173173
}.build()
174-
val builder = NavigationTemplate.Builder()
174+
175+
return NavigationTemplate.Builder()
175176
.setBackgroundColor(CarColor.PRIMARY)
176177
.setActionStrip(actionStrip)
177178
.setMapActionStrip(mapActionStripBuilder.build())
178-
179-
carRouteProgressObserver.navigationInfo?.let {
180-
builder.setNavigationInfo(it)
181-
}
182-
183-
carRouteProgressObserver.travelEstimateInfo?.let {
184-
builder.setDestinationTravelEstimate(it)
185-
}
186-
187-
return builder.build()
179+
.apply { navigationInfoProvider.setNavigationInfo(this) }
180+
.build()
188181
}
189182

190183
private fun stopNavigation() {
Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
package com.mapbox.androidauto.car.navigation
22

33
import com.mapbox.androidauto.car.MainCarContext
4-
import com.mapbox.androidauto.car.navigation.lanes.CarLanesImageRenderer
5-
import com.mapbox.androidauto.car.navigation.maneuver.CarManeuverIconOptions
6-
import com.mapbox.androidauto.car.navigation.maneuver.CarManeuverIconRenderer
7-
import com.mapbox.androidauto.car.navigation.maneuver.CarManeuverInstructionRenderer
8-
import com.mapbox.navigation.ui.tripprogress.api.MapboxTripProgressApi
9-
import com.mapbox.navigation.ui.tripprogress.model.TripProgressUpdateFormatter
104

115
class CarActiveGuidanceCarContext(
126
val mainCarContext: MainCarContext
@@ -16,22 +10,4 @@ class CarActiveGuidanceCarContext(
1610
val mapboxCarMap = mainCarContext.mapboxCarMap
1711
val mapboxNavigation = mainCarContext.mapboxNavigation
1812
val distanceFormatter = mainCarContext.distanceFormatter
19-
20-
/** NavigationCarContext **/
21-
private val carDistanceFormatter = CarDistanceFormatter(
22-
mapboxNavigation.navigationOptions.distanceFormatterOptions.unitType
23-
)
24-
private val carLaneImageGenerator = CarLanesImageRenderer(carContext)
25-
val navigationInfoMapper = CarNavigationInfoMapper(
26-
carContext.applicationContext,
27-
CarManeuverInstructionRenderer(),
28-
CarManeuverIconRenderer(CarManeuverIconOptions.Builder(carContext).build()),
29-
carLaneImageGenerator,
30-
carDistanceFormatter
31-
)
32-
val maneuverApi = mainCarContext.maneuverApi
33-
val tripProgressMapper = CarNavigationEtaMapper(
34-
carDistanceFormatter,
35-
MapboxTripProgressApi(TripProgressUpdateFormatter.Builder(carContext).build()),
36-
)
3713
}

libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/navigation/CarNavigationEtaMapper.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class CarNavigationEtaMapper(
1414
private val tripProgressApi: MapboxTripProgressApi,
1515
) {
1616

17-
fun from(routeProgress: RouteProgress): TravelEstimate {
17+
fun getDestinationTravelEstimate(routeProgress: RouteProgress): TravelEstimate {
1818
val result = tripProgressApi.getTripProgress(routeProgress)
1919
val distance = carDistanceFormatter.carDistance(result.distanceRemaining)
2020
val zonedDateTime =
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.mapbox.androidauto.car.navigation
2+
3+
import androidx.car.app.navigation.model.NavigationTemplate
4+
import androidx.car.app.navigation.model.TravelEstimate
5+
6+
/**
7+
* Contains data needed to populate the [NavigationTemplate].
8+
*
9+
* @see [CarNavigationInfoProvider]
10+
*/
11+
class CarNavigationInfo internal constructor(
12+
/**
13+
* Contains the current [NavigationTemplate.NavigationInfo] that is used with the
14+
* [NavigationTemplate].
15+
*/
16+
val navigationInfo: NavigationTemplate.NavigationInfo? = null,
17+
/**
18+
* Contains the current [TravelEstimate] that is used with the [NavigationTemplate].
19+
*/
20+
val destinationTravelEstimate: TravelEstimate? = null,
21+
)

libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/navigation/CarNavigationInfoObserver.kt

Lines changed: 0 additions & 85 deletions
This file was deleted.

0 commit comments

Comments
 (0)