Skip to content

Commit 54c1613

Browse files
committed
Integrate mapbox car map installer
1 parent 61b030e commit 54c1613

File tree

9 files changed

+68
-154
lines changed

9 files changed

+68
-154
lines changed

build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ allprojects {
5757
// we allow access to snapshots repo if ALLOW_SNAPSHOT_REPOSITORY is set, what means we are running on CI
5858
// with Navigation Native forced to be some snapshot version
5959
// if you need to use snapshots while development, just set `addSnapshotsRepo` to true manually
60-
def addSnapshotsRepo = project.hasProperty('ALLOW_SNAPSHOT_REPOSITORY') ? project.property('ALLOW_SNAPSHOT_REPOSITORY') : (System.getenv("ALLOW_SNAPSHOT_REPOSITORY")?.toBoolean() ?: false)
60+
// def addSnapshotsRepo = project.hasProperty('ALLOW_SNAPSHOT_REPOSITORY') ? project.property('ALLOW_SNAPSHOT_REPOSITORY') : (System.getenv("ALLOW_SNAPSHOT_REPOSITORY")?.toBoolean() ?: false)
61+
def addSnapshotsRepo = true
6162
if (addSnapshotsRepo) {
6263
println("Snapshot repository reference added.")
6364
maven {

gradle/dependencies.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ ext {
2828
mapboxCrashMonitor : '2.0.0',
2929
mapboxAnnotationPlugin : '0.8.0',
3030
mapboxBaseAndroid : '0.8.0',
31-
mapboxMapsAndroidAuto : '0.2.0',
31+
mapboxMapsAndroidAuto : '0.3.0-SNAPSHOT',
3232
androidXLifecycle : '2.4.0',
3333
androidXCoreVersion : '1.6.0',
3434
androidXArchCoreVersion : '2.1.0',

libnavui-androidauto/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Mapbox welcomes participation and contributions from everyone.
55
## Unreleased
66
#### Features
77
#### Bug fixes and improvements
8+
- Integrate `MapboxCarMapSessionInstaller` and `MapboxCarMapScreenInstaller`. [#6211](https://github.com/mapbox/mapbox-navigation-android/pull/6211)
89

910
## androidauto-v0.8.0 - Aug 18, 2022
1011
### Changelog

libnavui-androidauto/api/current.txt

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,7 @@ package com.mapbox.androidauto.car {
7676

7777
public final class MainCarScreen extends androidx.car.app.Screen {
7878
ctor public MainCarScreen(com.mapbox.androidauto.car.MainCarContext mainCarContext);
79-
method public com.mapbox.androidauto.car.location.CarLocationRenderer getCarLocationRenderer();
80-
method public com.mapbox.androidauto.car.navigation.CarNavigationCamera getCarNavigationCamera();
81-
method public com.mapbox.androidauto.car.preview.CarRouteLine getCarRouteLine();
82-
method public com.mapbox.androidauto.car.navigation.speedlimit.CarSpeedLimitRenderer getCarSpeedLimitRenderer();
8379
method public androidx.car.app.model.Template onGetTemplate();
84-
property public final com.mapbox.androidauto.car.location.CarLocationRenderer carLocationRenderer;
85-
property public final com.mapbox.androidauto.car.navigation.CarNavigationCamera carNavigationCamera;
86-
property public final com.mapbox.androidauto.car.preview.CarRouteLine carRouteLine;
87-
property public final com.mapbox.androidauto.car.navigation.speedlimit.CarSpeedLimitRenderer carSpeedLimitRenderer;
8880
}
8981

9082
public final class MainMapActionStrip {
@@ -287,15 +279,7 @@ package com.mapbox.androidauto.car.navigation {
287279

288280
public final class ActiveGuidanceScreen extends androidx.car.app.Screen {
289281
ctor public ActiveGuidanceScreen(com.mapbox.androidauto.car.navigation.CarActiveGuidanceCarContext carActiveGuidanceContext, java.util.List<? extends com.mapbox.androidauto.car.action.MapboxActionProvider> actionProviders, com.mapbox.androidauto.car.placeslistonmap.PlacesListOnMapLayerUtil placesLayerUtil = com.mapbox.androidauto.car.placeslistonmap.PlacesListOnMapLayerUtil());
290-
method public com.mapbox.androidauto.car.location.CarLocationRenderer getCarLocationRenderer();
291-
method public com.mapbox.androidauto.car.navigation.CarNavigationCamera getCarNavigationCamera();
292-
method public com.mapbox.androidauto.car.preview.CarRouteLine getCarRouteLine();
293-
method public com.mapbox.androidauto.car.navigation.speedlimit.CarSpeedLimitRenderer getCarSpeedLimitRenderer();
294282
method public androidx.car.app.model.Template onGetTemplate();
295-
property public final com.mapbox.androidauto.car.location.CarLocationRenderer carLocationRenderer;
296-
property public final com.mapbox.androidauto.car.navigation.CarNavigationCamera carNavigationCamera;
297-
property public final com.mapbox.androidauto.car.preview.CarRouteLine carRouteLine;
298-
property public final com.mapbox.androidauto.car.navigation.speedlimit.CarSpeedLimitRenderer carSpeedLimitRenderer;
299283
}
300284

301285
public final class CarActiveGuidanceCarContext {
@@ -629,17 +613,9 @@ package com.mapbox.androidauto.car.preview {
629613

630614
@com.mapbox.maps.MapboxExperimental public final class CarRoutePreviewScreen extends androidx.car.app.Screen {
631615
ctor public CarRoutePreviewScreen(com.mapbox.androidauto.car.preview.RoutePreviewCarContext routePreviewCarContext, com.mapbox.androidauto.car.search.PlaceRecord placeRecord, java.util.List<com.mapbox.navigation.base.route.NavigationRoute> navigationRoutes, com.mapbox.androidauto.car.placeslistonmap.PlacesListOnMapLayerUtil placesLayerUtil = com.mapbox.androidauto.car.placeslistonmap.PlacesListOnMapLayerUtil());
632-
method public com.mapbox.androidauto.car.location.CarLocationRenderer getCarLocationRenderer();
633-
method public com.mapbox.androidauto.car.navigation.CarNavigationCamera getCarNavigationCamera();
634-
method public com.mapbox.androidauto.car.preview.CarRouteLine getCarRouteLine();
635-
method public com.mapbox.androidauto.car.navigation.speedlimit.CarSpeedLimitRenderer getCarSpeedLimitRenderer();
636616
method public int getSelectedIndex();
637617
method public androidx.car.app.model.Template onGetTemplate();
638618
method public void setSelectedIndex(int);
639-
property public final com.mapbox.androidauto.car.location.CarLocationRenderer carLocationRenderer;
640-
property public final com.mapbox.androidauto.car.navigation.CarNavigationCamera carNavigationCamera;
641-
property public final com.mapbox.androidauto.car.preview.CarRouteLine carRouteLine;
642-
property public final com.mapbox.androidauto.car.navigation.speedlimit.CarSpeedLimitRenderer carSpeedLimitRenderer;
643619
property public final int selectedIndex;
644620
}
645621

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

Lines changed: 13 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import androidx.car.app.Screen
44
import androidx.car.app.model.CarColor
55
import androidx.car.app.model.Template
66
import androidx.car.app.navigation.model.NavigationTemplate
7-
import androidx.lifecycle.DefaultLifecycleObserver
8-
import androidx.lifecycle.LifecycleOwner
97
import com.mapbox.androidauto.car.location.CarLocationRenderer
108
import com.mapbox.androidauto.car.navigation.CarCameraMode
119
import com.mapbox.androidauto.car.navigation.CarNavigationCamera
@@ -14,54 +12,37 @@ import com.mapbox.androidauto.car.navigation.speedlimit.CarSpeedLimitRenderer
1412
import com.mapbox.androidauto.car.preview.CarRouteLine
1513
import com.mapbox.androidauto.internal.logAndroidAuto
1614
import com.mapbox.maps.MapboxExperimental
15+
import com.mapbox.maps.extension.androidauto.mapboxMapInstaller
1716

1817
/**
1918
* When the app is launched from Android Auto
2019
*/
2120
@OptIn(MapboxExperimental::class)
2221
class MainCarScreen(
23-
private val mainCarContext: MainCarContext
22+
mainCarContext: MainCarContext
2423
) : Screen(mainCarContext.carContext) {
2524

26-
val carRouteLine = CarRouteLine(mainCarContext)
27-
val carLocationRenderer = CarLocationRenderer(mainCarContext)
28-
val carSpeedLimitRenderer = CarSpeedLimitRenderer(mainCarContext)
29-
val carNavigationCamera = CarNavigationCamera(
25+
private val carNavigationCamera = CarNavigationCamera(
3026
mainCarContext.mapboxNavigation,
3127
CarCameraMode.FOLLOWING,
3228
alternativeCarCameraMode = null,
3329
)
34-
private val roadLabelSurfaceLayer = RoadLabelSurfaceLayer(
35-
mainCarContext.carContext,
36-
mainCarContext.mapboxNavigation,
37-
)
3830

3931
private val mainActionStrip = MainActionStrip(this, mainCarContext)
4032
private val mapActionStripBuilder = MainMapActionStrip(this, carNavigationCamera)
4133

4234
init {
4335
logAndroidAuto("MainCarScreen constructor")
44-
lifecycle.addObserver(object : DefaultLifecycleObserver {
45-
override fun onResume(owner: LifecycleOwner) {
46-
logAndroidAuto("MainCarScreen onResume")
47-
mainCarContext.mapboxCarMap.registerObserver(carRouteLine)
48-
mainCarContext.mapboxCarMap.registerObserver(carLocationRenderer)
49-
mainCarContext.mapboxCarMap.registerObserver(roadLabelSurfaceLayer)
50-
mainCarContext.mapboxCarMap.registerObserver(carSpeedLimitRenderer)
51-
mainCarContext.mapboxCarMap.registerObserver(carNavigationCamera)
52-
mainCarContext.mapboxCarMap.setGestureHandler(carNavigationCamera.gestureHandler)
53-
}
54-
55-
override fun onPause(owner: LifecycleOwner) {
56-
logAndroidAuto("MainCarScreen onPause")
57-
mainCarContext.mapboxCarMap.unregisterObserver(carRouteLine)
58-
mainCarContext.mapboxCarMap.unregisterObserver(carLocationRenderer)
59-
mainCarContext.mapboxCarMap.unregisterObserver(roadLabelSurfaceLayer)
60-
mainCarContext.mapboxCarMap.unregisterObserver(carSpeedLimitRenderer)
61-
mainCarContext.mapboxCarMap.unregisterObserver(carNavigationCamera)
62-
mainCarContext.mapboxCarMap.setGestureHandler(null)
63-
}
64-
})
36+
mapboxMapInstaller(mainCarContext.mapboxCarMap)
37+
.onResumed(
38+
CarRouteLine(mainCarContext),
39+
CarLocationRenderer(mainCarContext),
40+
RoadLabelSurfaceLayer(carContext, mainCarContext.mapboxNavigation),
41+
CarSpeedLimitRenderer(mainCarContext),
42+
carNavigationCamera,
43+
)
44+
.gestureHandler(carNavigationCamera.gestureHandler)
45+
.install()
6546
}
6647

6748
override fun onGetTemplate(): Template {

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

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import com.mapbox.geojson.FeatureCollection
2727
import com.mapbox.maps.MapboxExperimental
2828
import com.mapbox.maps.extension.androidauto.MapboxCarMapObserver
2929
import com.mapbox.maps.extension.androidauto.MapboxCarMapSurface
30+
import com.mapbox.maps.extension.androidauto.mapboxMapInstaller
3031
import com.mapbox.maps.plugin.delegates.listeners.OnStyleLoadedListener
3132
import com.mapbox.navigation.base.trip.model.RouteLegProgress
3233
import com.mapbox.navigation.base.trip.model.RouteProgress
@@ -44,20 +45,12 @@ class ActiveGuidanceScreen(
4445
private val placesLayerUtil: PlacesListOnMapLayerUtil = PlacesListOnMapLayerUtil(),
4546
) : Screen(carActiveGuidanceContext.carContext) {
4647

47-
val carRouteLine = CarRouteLine(carActiveGuidanceContext.mainCarContext)
48-
val carLocationRenderer = CarLocationRenderer(carActiveGuidanceContext.mainCarContext)
49-
val carSpeedLimitRenderer = CarSpeedLimitRenderer(carActiveGuidanceContext.mainCarContext)
50-
val carNavigationCamera = CarNavigationCamera(
48+
private val carRouteProgressObserver = CarNavigationInfoObserver(carActiveGuidanceContext)
49+
private val carNavigationCamera = CarNavigationCamera(
5150
carActiveGuidanceContext.mapboxNavigation,
5251
CarCameraMode.FOLLOWING,
5352
CarCameraMode.OVERVIEW,
5453
)
55-
private val roadLabelSurfaceLayer = RoadLabelSurfaceLayer(
56-
carActiveGuidanceContext.carContext,
57-
carActiveGuidanceContext.mapboxNavigation,
58-
)
59-
60-
private val carRouteProgressObserver = CarNavigationInfoObserver(carActiveGuidanceContext)
6154
private val mapActionStripBuilder = MainMapActionStrip(this, carNavigationCamera)
6255

6356
private val arrivalObserver = object : ArrivalObserver {
@@ -112,6 +105,21 @@ class ActiveGuidanceScreen(
112105
}
113106

114107
init {
108+
mapboxMapInstaller(carActiveGuidanceContext.mapboxCarMap)
109+
.onResumed(
110+
CarLocationRenderer(carActiveGuidanceContext.mainCarContext),
111+
RoadLabelSurfaceLayer(
112+
carContext,
113+
carActiveGuidanceContext.mapboxNavigation,
114+
),
115+
CarSpeedLimitRenderer(carActiveGuidanceContext.mainCarContext),
116+
carNavigationCamera,
117+
CarRouteLine(carActiveGuidanceContext.mainCarContext),
118+
surfaceListener,
119+
)
120+
.gestureHandler(carNavigationCamera.gestureHandler)
121+
.install()
122+
115123
logAndroidAuto("ActiveGuidanceScreen constructor")
116124
lifecycle.addObserver(object : DefaultLifecycleObserver {
117125

@@ -122,29 +130,13 @@ class ActiveGuidanceScreen(
122130

123131
override fun onResume(owner: LifecycleOwner) {
124132
logAndroidAuto("ActiveGuidanceScreen onResume")
125-
carActiveGuidanceContext.mapboxCarMap.registerObserver(carLocationRenderer)
126-
carActiveGuidanceContext.mapboxCarMap.registerObserver(roadLabelSurfaceLayer)
127-
carActiveGuidanceContext.mapboxCarMap.registerObserver(carSpeedLimitRenderer)
128-
carActiveGuidanceContext.mapboxCarMap.registerObserver(carNavigationCamera)
129-
carActiveGuidanceContext.mapboxCarMap.setGestureHandler(
130-
carNavigationCamera.gestureHandler
131-
)
132-
carActiveGuidanceContext.mapboxCarMap.registerObserver(carRouteLine)
133-
carActiveGuidanceContext.mapboxCarMap.registerObserver(surfaceListener)
134133
carRouteProgressObserver.start {
135134
invalidate()
136135
}
137136
}
138137

139138
override fun onPause(owner: LifecycleOwner) {
140139
logAndroidAuto("ActiveGuidanceScreen onPause")
141-
carActiveGuidanceContext.mapboxCarMap.unregisterObserver(roadLabelSurfaceLayer)
142-
carActiveGuidanceContext.mapboxCarMap.unregisterObserver(carLocationRenderer)
143-
carActiveGuidanceContext.mapboxCarMap.unregisterObserver(carSpeedLimitRenderer)
144-
carActiveGuidanceContext.mapboxCarMap.unregisterObserver(carNavigationCamera)
145-
carActiveGuidanceContext.mapboxCarMap.setGestureHandler(null)
146-
carActiveGuidanceContext.mapboxCarMap.unregisterObserver(carRouteLine)
147-
carActiveGuidanceContext.mapboxCarMap.unregisterObserver(surfaceListener)
148140
carRouteProgressObserver.stop()
149141
}
150142

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

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import com.mapbox.geojson.Point
3131
import com.mapbox.maps.MapboxExperimental
3232
import com.mapbox.maps.extension.androidauto.MapboxCarMapObserver
3333
import com.mapbox.maps.extension.androidauto.MapboxCarMapSurface
34+
import com.mapbox.maps.extension.androidauto.mapboxMapInstaller
3435
import com.mapbox.maps.plugin.delegates.listeners.OnStyleLoadedListener
3536
import com.mapbox.navigation.base.route.NavigationRoute
3637
import kotlinx.coroutines.Dispatchers
@@ -55,7 +56,6 @@ class PlacesListOnMapScreen(
5556
private val placeRecords by lazy { CopyOnWriteArrayList<PlaceRecord>() }
5657
private val jobControl by lazy { mainCarContext.getJobControl() }
5758
private val carNavigationCamera = CarLocationsOverviewCamera(mainCarContext.mapboxNavigation)
58-
private val locationRenderer = CarLocationRenderer(mainCarContext)
5959
private var styleLoadedListener: OnStyleLoadedListener? = null
6060

6161
private val surfaceListener = object : MapboxCarMapObserver {
@@ -111,37 +111,19 @@ class PlacesListOnMapScreen(
111111
}
112112

113113
init {
114-
lifecycle.addObserver(object : DefaultLifecycleObserver {
115-
override fun onCreate(owner: LifecycleOwner) {
116-
logAndroidAuto("PlacesListOnMapScreen onCreate")
117-
}
118-
119-
override fun onStart(owner: LifecycleOwner) {
120-
logAndroidAuto("PlacesListOnMapScreen onStart")
121-
}
122-
123-
override fun onResume(owner: LifecycleOwner) {
124-
logAndroidAuto("PlacesListOnMapScreen onResume")
125-
mainCarContext.mapboxCarMap.registerObserver(surfaceListener)
126-
mainCarContext.mapboxCarMap.registerObserver(carNavigationCamera)
127-
mainCarContext.mapboxCarMap.registerObserver(locationRenderer)
128-
}
114+
mapboxMapInstaller(mainCarContext.mapboxCarMap)
115+
.onResumed(
116+
surfaceListener,
117+
carNavigationCamera,
118+
CarLocationRenderer(mainCarContext)
119+
)
120+
.install()
129121

122+
lifecycle.addObserver(object : DefaultLifecycleObserver {
130123
override fun onPause(owner: LifecycleOwner) {
131124
logAndroidAuto("PlacesListOnMapScreen onPause")
132125
placesProvider.cancel()
133126
jobControl.job.cancelChildren()
134-
mainCarContext.mapboxCarMap.unregisterObserver(locationRenderer)
135-
mainCarContext.mapboxCarMap.unregisterObserver(carNavigationCamera)
136-
mainCarContext.mapboxCarMap.unregisterObserver(surfaceListener)
137-
}
138-
139-
override fun onStop(owner: LifecycleOwner) {
140-
logAndroidAuto("PlacesListOnMapScreen onStop")
141-
}
142-
143-
override fun onDestroy(owner: LifecycleOwner) {
144-
logAndroidAuto("PlacesListOnMapScreen onDestroy")
145127
}
146128
})
147129
}

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

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import com.mapbox.geojson.FeatureCollection
3232
import com.mapbox.maps.MapboxExperimental
3333
import com.mapbox.maps.extension.androidauto.MapboxCarMapObserver
3434
import com.mapbox.maps.extension.androidauto.MapboxCarMapSurface
35+
import com.mapbox.maps.extension.androidauto.mapboxMapInstaller
3536
import com.mapbox.maps.plugin.delegates.listeners.OnStyleLoadedListener
3637
import com.mapbox.navigation.base.route.NavigationRoute
3738

@@ -49,15 +50,6 @@ class CarRoutePreviewScreen(
4950

5051
private val routesProvider = PreviewRoutesProvider(navigationRoutes)
5152
var selectedIndex = 0
52-
val carRouteLine = CarRouteLine(routePreviewCarContext.mainCarContext, routesProvider)
53-
val carLocationRenderer = CarLocationRenderer(routePreviewCarContext.mainCarContext)
54-
val carSpeedLimitRenderer = CarSpeedLimitRenderer(routePreviewCarContext.mainCarContext)
55-
val carNavigationCamera = CarNavigationCamera(
56-
routePreviewCarContext.mapboxNavigation,
57-
CarCameraMode.OVERVIEW,
58-
CarCameraMode.FOLLOWING,
59-
routesProvider,
60-
)
6153

6254
private val backPressCallback = object : OnBackPressedCallback(true) {
6355

@@ -101,28 +93,31 @@ class CarRoutePreviewScreen(
10193

10294
init {
10395
logAndroidAuto("CarRoutePreviewScreen constructor")
96+
mapboxMapInstaller(routePreviewCarContext.mapboxCarMap)
97+
.onResumed(
98+
CarLocationRenderer(routePreviewCarContext.mainCarContext),
99+
CarSpeedLimitRenderer(routePreviewCarContext.mainCarContext),
100+
CarNavigationCamera(
101+
routePreviewCarContext.mapboxNavigation,
102+
CarCameraMode.OVERVIEW,
103+
CarCameraMode.FOLLOWING,
104+
routesProvider,
105+
),
106+
CarRouteLine(routePreviewCarContext.mainCarContext, routesProvider),
107+
surfaceListener,
108+
)
109+
.install()
110+
104111
lifecycle.muteAudioGuidance()
105112
lifecycle.addObserver(object : DefaultLifecycleObserver {
106113
override fun onResume(owner: LifecycleOwner) {
107114
logAndroidAuto("CarRoutePreviewScreen onResume")
108-
routePreviewCarContext.carContext.onBackPressedDispatcher.addCallback(
109-
backPressCallback
110-
)
111-
routePreviewCarContext.mapboxCarMap.registerObserver(carLocationRenderer)
112-
routePreviewCarContext.mapboxCarMap.registerObserver(carSpeedLimitRenderer)
113-
routePreviewCarContext.mapboxCarMap.registerObserver(carNavigationCamera)
114-
routePreviewCarContext.mapboxCarMap.registerObserver(carRouteLine)
115-
routePreviewCarContext.mapboxCarMap.registerObserver(surfaceListener)
115+
carContext.onBackPressedDispatcher.addCallback(backPressCallback)
116116
}
117117

118118
override fun onPause(owner: LifecycleOwner) {
119119
logAndroidAuto("CarRoutePreviewScreen onPause")
120120
backPressCallback.remove()
121-
routePreviewCarContext.mapboxCarMap.unregisterObserver(carLocationRenderer)
122-
routePreviewCarContext.mapboxCarMap.unregisterObserver(carSpeedLimitRenderer)
123-
routePreviewCarContext.mapboxCarMap.unregisterObserver(carNavigationCamera)
124-
routePreviewCarContext.mapboxCarMap.unregisterObserver(carRouteLine)
125-
routePreviewCarContext.mapboxCarMap.unregisterObserver(surfaceListener)
126121
}
127122
})
128123
}

0 commit comments

Comments
 (0)