diff --git a/build.gradle b/build.gradle index e959361d65c..7744048e4b8 100644 --- a/build.gradle +++ b/build.gradle @@ -57,7 +57,8 @@ allprojects { // we allow access to snapshots repo if ALLOW_SNAPSHOT_REPOSITORY is set, what means we are running on CI // with Navigation Native forced to be some snapshot version // if you need to use snapshots while development, just set `addSnapshotsRepo` to true manually - def addSnapshotsRepo = project.hasProperty('ALLOW_SNAPSHOT_REPOSITORY') ? project.property('ALLOW_SNAPSHOT_REPOSITORY') : (System.getenv("ALLOW_SNAPSHOT_REPOSITORY")?.toBoolean() ?: false) +// def addSnapshotsRepo = project.hasProperty('ALLOW_SNAPSHOT_REPOSITORY') ? project.property('ALLOW_SNAPSHOT_REPOSITORY') : (System.getenv("ALLOW_SNAPSHOT_REPOSITORY")?.toBoolean() ?: false) + def addSnapshotsRepo = true if (addSnapshotsRepo) { println("Snapshot repository reference added.") maven { diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index 4f11c9367c0..c60638cb2b6 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -28,7 +28,7 @@ ext { mapboxCrashMonitor : '2.0.0', mapboxAnnotationPlugin : '0.8.0', mapboxBaseAndroid : '0.8.0', - mapboxMapsAndroidAuto : '0.2.0', + mapboxMapsAndroidAuto : '0.3.0-SNAPSHOT', androidXLifecycle : '2.4.0', androidXCoreVersion : '1.6.0', androidXArchCoreVersion : '2.1.0', diff --git a/libnavui-androidauto/CHANGELOG.md b/libnavui-androidauto/CHANGELOG.md index 17ce440b9aa..09ce113aeef 100644 --- a/libnavui-androidauto/CHANGELOG.md +++ b/libnavui-androidauto/CHANGELOG.md @@ -5,6 +5,7 @@ Mapbox welcomes participation and contributions from everyone. ## Unreleased #### Features #### Bug fixes and improvements +- Integrate `MapboxCarMapSessionInstaller` and `MapboxCarMapScreenInstaller`. [#6211](https://github.com/mapbox/mapbox-navigation-android/pull/6211) ## androidauto-v0.8.0 - Aug 18, 2022 ### Changelog diff --git a/libnavui-androidauto/api/current.txt b/libnavui-androidauto/api/current.txt index 4d62ea82548..bf43603fe72 100644 --- a/libnavui-androidauto/api/current.txt +++ b/libnavui-androidauto/api/current.txt @@ -76,15 +76,7 @@ package com.mapbox.androidauto.car { public final class MainCarScreen extends androidx.car.app.Screen { ctor public MainCarScreen(com.mapbox.androidauto.car.MainCarContext mainCarContext); - method public com.mapbox.androidauto.car.location.CarLocationRenderer getCarLocationRenderer(); - method public com.mapbox.androidauto.car.navigation.CarNavigationCamera getCarNavigationCamera(); - method public com.mapbox.androidauto.car.preview.CarRouteLine getCarRouteLine(); - method public com.mapbox.androidauto.car.navigation.speedlimit.CarSpeedLimitRenderer getCarSpeedLimitRenderer(); method public androidx.car.app.model.Template onGetTemplate(); - property public final com.mapbox.androidauto.car.location.CarLocationRenderer carLocationRenderer; - property public final com.mapbox.androidauto.car.navigation.CarNavigationCamera carNavigationCamera; - property public final com.mapbox.androidauto.car.preview.CarRouteLine carRouteLine; - property public final com.mapbox.androidauto.car.navigation.speedlimit.CarSpeedLimitRenderer carSpeedLimitRenderer; } public final class MainMapActionStrip { @@ -287,15 +279,7 @@ package com.mapbox.androidauto.car.navigation { public final class ActiveGuidanceScreen extends androidx.car.app.Screen { ctor public ActiveGuidanceScreen(com.mapbox.androidauto.car.navigation.CarActiveGuidanceCarContext carActiveGuidanceContext, java.util.List actionProviders, com.mapbox.androidauto.car.placeslistonmap.PlacesListOnMapLayerUtil placesLayerUtil = com.mapbox.androidauto.car.placeslistonmap.PlacesListOnMapLayerUtil()); - method public com.mapbox.androidauto.car.location.CarLocationRenderer getCarLocationRenderer(); - method public com.mapbox.androidauto.car.navigation.CarNavigationCamera getCarNavigationCamera(); - method public com.mapbox.androidauto.car.preview.CarRouteLine getCarRouteLine(); - method public com.mapbox.androidauto.car.navigation.speedlimit.CarSpeedLimitRenderer getCarSpeedLimitRenderer(); method public androidx.car.app.model.Template onGetTemplate(); - property public final com.mapbox.androidauto.car.location.CarLocationRenderer carLocationRenderer; - property public final com.mapbox.androidauto.car.navigation.CarNavigationCamera carNavigationCamera; - property public final com.mapbox.androidauto.car.preview.CarRouteLine carRouteLine; - property public final com.mapbox.androidauto.car.navigation.speedlimit.CarSpeedLimitRenderer carSpeedLimitRenderer; } public final class CarActiveGuidanceCarContext { @@ -629,17 +613,9 @@ package com.mapbox.androidauto.car.preview { @com.mapbox.maps.MapboxExperimental public final class CarRoutePreviewScreen extends androidx.car.app.Screen { ctor public CarRoutePreviewScreen(com.mapbox.androidauto.car.preview.RoutePreviewCarContext routePreviewCarContext, com.mapbox.androidauto.car.search.PlaceRecord placeRecord, java.util.List navigationRoutes, com.mapbox.androidauto.car.placeslistonmap.PlacesListOnMapLayerUtil placesLayerUtil = com.mapbox.androidauto.car.placeslistonmap.PlacesListOnMapLayerUtil()); - method public com.mapbox.androidauto.car.location.CarLocationRenderer getCarLocationRenderer(); - method public com.mapbox.androidauto.car.navigation.CarNavigationCamera getCarNavigationCamera(); - method public com.mapbox.androidauto.car.preview.CarRouteLine getCarRouteLine(); - method public com.mapbox.androidauto.car.navigation.speedlimit.CarSpeedLimitRenderer getCarSpeedLimitRenderer(); method public int getSelectedIndex(); method public androidx.car.app.model.Template onGetTemplate(); method public void setSelectedIndex(int); - property public final com.mapbox.androidauto.car.location.CarLocationRenderer carLocationRenderer; - property public final com.mapbox.androidauto.car.navigation.CarNavigationCamera carNavigationCamera; - property public final com.mapbox.androidauto.car.preview.CarRouteLine carRouteLine; - property public final com.mapbox.androidauto.car.navigation.speedlimit.CarSpeedLimitRenderer carSpeedLimitRenderer; property public final int selectedIndex; } diff --git a/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/MainCarScreen.kt b/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/MainCarScreen.kt index 59f5094be06..4fd9e20f658 100644 --- a/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/MainCarScreen.kt +++ b/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/MainCarScreen.kt @@ -4,8 +4,6 @@ import androidx.car.app.Screen import androidx.car.app.model.CarColor import androidx.car.app.model.Template import androidx.car.app.navigation.model.NavigationTemplate -import androidx.lifecycle.DefaultLifecycleObserver -import androidx.lifecycle.LifecycleOwner import com.mapbox.androidauto.car.location.CarLocationRenderer import com.mapbox.androidauto.car.navigation.CarCameraMode import com.mapbox.androidauto.car.navigation.CarNavigationCamera @@ -14,54 +12,37 @@ import com.mapbox.androidauto.car.navigation.speedlimit.CarSpeedLimitRenderer import com.mapbox.androidauto.car.preview.CarRouteLine import com.mapbox.androidauto.internal.logAndroidAuto import com.mapbox.maps.MapboxExperimental +import com.mapbox.maps.extension.androidauto.mapboxMapInstaller /** * When the app is launched from Android Auto */ @OptIn(MapboxExperimental::class) class MainCarScreen( - private val mainCarContext: MainCarContext + mainCarContext: MainCarContext ) : Screen(mainCarContext.carContext) { - val carRouteLine = CarRouteLine(mainCarContext) - val carLocationRenderer = CarLocationRenderer(mainCarContext) - val carSpeedLimitRenderer = CarSpeedLimitRenderer(mainCarContext) - val carNavigationCamera = CarNavigationCamera( + private val carNavigationCamera = CarNavigationCamera( mainCarContext.mapboxNavigation, CarCameraMode.FOLLOWING, alternativeCarCameraMode = null, ) - private val roadLabelSurfaceLayer = RoadLabelSurfaceLayer( - mainCarContext.carContext, - mainCarContext.mapboxNavigation, - ) private val mainActionStrip = MainActionStrip(this, mainCarContext) private val mapActionStripBuilder = MainMapActionStrip(this, carNavigationCamera) init { logAndroidAuto("MainCarScreen constructor") - lifecycle.addObserver(object : DefaultLifecycleObserver { - override fun onResume(owner: LifecycleOwner) { - logAndroidAuto("MainCarScreen onResume") - mainCarContext.mapboxCarMap.registerObserver(carRouteLine) - mainCarContext.mapboxCarMap.registerObserver(carLocationRenderer) - mainCarContext.mapboxCarMap.registerObserver(roadLabelSurfaceLayer) - mainCarContext.mapboxCarMap.registerObserver(carSpeedLimitRenderer) - mainCarContext.mapboxCarMap.registerObserver(carNavigationCamera) - mainCarContext.mapboxCarMap.setGestureHandler(carNavigationCamera.gestureHandler) - } - - override fun onPause(owner: LifecycleOwner) { - logAndroidAuto("MainCarScreen onPause") - mainCarContext.mapboxCarMap.unregisterObserver(carRouteLine) - mainCarContext.mapboxCarMap.unregisterObserver(carLocationRenderer) - mainCarContext.mapboxCarMap.unregisterObserver(roadLabelSurfaceLayer) - mainCarContext.mapboxCarMap.unregisterObserver(carSpeedLimitRenderer) - mainCarContext.mapboxCarMap.unregisterObserver(carNavigationCamera) - mainCarContext.mapboxCarMap.setGestureHandler(null) - } - }) + mapboxMapInstaller(mainCarContext.mapboxCarMap) + .onResumed( + CarRouteLine(mainCarContext), + CarLocationRenderer(mainCarContext), + RoadLabelSurfaceLayer(carContext, mainCarContext.mapboxNavigation), + CarSpeedLimitRenderer(mainCarContext), + carNavigationCamera, + ) + .gestureHandler(carNavigationCamera.gestureHandler) + .install() } override fun onGetTemplate(): Template { diff --git a/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/navigation/ActiveGuidanceScreen.kt b/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/navigation/ActiveGuidanceScreen.kt index 0f7ebbaba6e..865621d245c 100644 --- a/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/navigation/ActiveGuidanceScreen.kt +++ b/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/navigation/ActiveGuidanceScreen.kt @@ -27,6 +27,7 @@ import com.mapbox.geojson.FeatureCollection import com.mapbox.maps.MapboxExperimental import com.mapbox.maps.extension.androidauto.MapboxCarMapObserver import com.mapbox.maps.extension.androidauto.MapboxCarMapSurface +import com.mapbox.maps.extension.androidauto.mapboxMapInstaller import com.mapbox.maps.plugin.delegates.listeners.OnStyleLoadedListener import com.mapbox.navigation.base.trip.model.RouteLegProgress import com.mapbox.navigation.base.trip.model.RouteProgress @@ -44,20 +45,12 @@ class ActiveGuidanceScreen( private val placesLayerUtil: PlacesListOnMapLayerUtil = PlacesListOnMapLayerUtil(), ) : Screen(carActiveGuidanceContext.carContext) { - val carRouteLine = CarRouteLine(carActiveGuidanceContext.mainCarContext) - val carLocationRenderer = CarLocationRenderer(carActiveGuidanceContext.mainCarContext) - val carSpeedLimitRenderer = CarSpeedLimitRenderer(carActiveGuidanceContext.mainCarContext) - val carNavigationCamera = CarNavigationCamera( + private val carRouteProgressObserver = CarNavigationInfoObserver(carActiveGuidanceContext) + private val carNavigationCamera = CarNavigationCamera( carActiveGuidanceContext.mapboxNavigation, CarCameraMode.FOLLOWING, CarCameraMode.OVERVIEW, ) - private val roadLabelSurfaceLayer = RoadLabelSurfaceLayer( - carActiveGuidanceContext.carContext, - carActiveGuidanceContext.mapboxNavigation, - ) - - private val carRouteProgressObserver = CarNavigationInfoObserver(carActiveGuidanceContext) private val mapActionStripBuilder = MainMapActionStrip(this, carNavigationCamera) private val arrivalObserver = object : ArrivalObserver { @@ -112,6 +105,21 @@ class ActiveGuidanceScreen( } init { + mapboxMapInstaller(carActiveGuidanceContext.mapboxCarMap) + .onResumed( + CarLocationRenderer(carActiveGuidanceContext.mainCarContext), + RoadLabelSurfaceLayer( + carContext, + carActiveGuidanceContext.mapboxNavigation, + ), + CarSpeedLimitRenderer(carActiveGuidanceContext.mainCarContext), + carNavigationCamera, + CarRouteLine(carActiveGuidanceContext.mainCarContext), + surfaceListener, + ) + .gestureHandler(carNavigationCamera.gestureHandler) + .install() + logAndroidAuto("ActiveGuidanceScreen constructor") lifecycle.addObserver(object : DefaultLifecycleObserver { @@ -122,15 +130,6 @@ class ActiveGuidanceScreen( override fun onResume(owner: LifecycleOwner) { logAndroidAuto("ActiveGuidanceScreen onResume") - carActiveGuidanceContext.mapboxCarMap.registerObserver(carLocationRenderer) - carActiveGuidanceContext.mapboxCarMap.registerObserver(roadLabelSurfaceLayer) - carActiveGuidanceContext.mapboxCarMap.registerObserver(carSpeedLimitRenderer) - carActiveGuidanceContext.mapboxCarMap.registerObserver(carNavigationCamera) - carActiveGuidanceContext.mapboxCarMap.setGestureHandler( - carNavigationCamera.gestureHandler - ) - carActiveGuidanceContext.mapboxCarMap.registerObserver(carRouteLine) - carActiveGuidanceContext.mapboxCarMap.registerObserver(surfaceListener) carRouteProgressObserver.start { invalidate() } @@ -138,13 +137,6 @@ class ActiveGuidanceScreen( override fun onPause(owner: LifecycleOwner) { logAndroidAuto("ActiveGuidanceScreen onPause") - carActiveGuidanceContext.mapboxCarMap.unregisterObserver(roadLabelSurfaceLayer) - carActiveGuidanceContext.mapboxCarMap.unregisterObserver(carLocationRenderer) - carActiveGuidanceContext.mapboxCarMap.unregisterObserver(carSpeedLimitRenderer) - carActiveGuidanceContext.mapboxCarMap.unregisterObserver(carNavigationCamera) - carActiveGuidanceContext.mapboxCarMap.setGestureHandler(null) - carActiveGuidanceContext.mapboxCarMap.unregisterObserver(carRouteLine) - carActiveGuidanceContext.mapboxCarMap.unregisterObserver(surfaceListener) carRouteProgressObserver.stop() } diff --git a/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/placeslistonmap/PlacesListOnMapScreen.kt b/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/placeslistonmap/PlacesListOnMapScreen.kt index c6551197f90..0a05647395e 100644 --- a/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/placeslistonmap/PlacesListOnMapScreen.kt +++ b/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/placeslistonmap/PlacesListOnMapScreen.kt @@ -31,6 +31,7 @@ import com.mapbox.geojson.Point import com.mapbox.maps.MapboxExperimental import com.mapbox.maps.extension.androidauto.MapboxCarMapObserver import com.mapbox.maps.extension.androidauto.MapboxCarMapSurface +import com.mapbox.maps.extension.androidauto.mapboxMapInstaller import com.mapbox.maps.plugin.delegates.listeners.OnStyleLoadedListener import com.mapbox.navigation.base.route.NavigationRoute import kotlinx.coroutines.Dispatchers @@ -55,7 +56,6 @@ class PlacesListOnMapScreen( private val placeRecords by lazy { CopyOnWriteArrayList() } private val jobControl by lazy { mainCarContext.getJobControl() } private val carNavigationCamera = CarLocationsOverviewCamera(mainCarContext.mapboxNavigation) - private val locationRenderer = CarLocationRenderer(mainCarContext) private var styleLoadedListener: OnStyleLoadedListener? = null private val surfaceListener = object : MapboxCarMapObserver { @@ -111,37 +111,19 @@ class PlacesListOnMapScreen( } init { - lifecycle.addObserver(object : DefaultLifecycleObserver { - override fun onCreate(owner: LifecycleOwner) { - logAndroidAuto("PlacesListOnMapScreen onCreate") - } - - override fun onStart(owner: LifecycleOwner) { - logAndroidAuto("PlacesListOnMapScreen onStart") - } - - override fun onResume(owner: LifecycleOwner) { - logAndroidAuto("PlacesListOnMapScreen onResume") - mainCarContext.mapboxCarMap.registerObserver(surfaceListener) - mainCarContext.mapboxCarMap.registerObserver(carNavigationCamera) - mainCarContext.mapboxCarMap.registerObserver(locationRenderer) - } + mapboxMapInstaller(mainCarContext.mapboxCarMap) + .onResumed( + surfaceListener, + carNavigationCamera, + CarLocationRenderer(mainCarContext) + ) + .install() + lifecycle.addObserver(object : DefaultLifecycleObserver { override fun onPause(owner: LifecycleOwner) { logAndroidAuto("PlacesListOnMapScreen onPause") placesProvider.cancel() jobControl.job.cancelChildren() - mainCarContext.mapboxCarMap.unregisterObserver(locationRenderer) - mainCarContext.mapboxCarMap.unregisterObserver(carNavigationCamera) - mainCarContext.mapboxCarMap.unregisterObserver(surfaceListener) - } - - override fun onStop(owner: LifecycleOwner) { - logAndroidAuto("PlacesListOnMapScreen onStop") - } - - override fun onDestroy(owner: LifecycleOwner) { - logAndroidAuto("PlacesListOnMapScreen onDestroy") } }) } diff --git a/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/preview/CarRoutePreviewScreen.kt b/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/preview/CarRoutePreviewScreen.kt index 71d33240203..0386bee6a1b 100644 --- a/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/preview/CarRoutePreviewScreen.kt +++ b/libnavui-androidauto/src/main/java/com/mapbox/androidauto/car/preview/CarRoutePreviewScreen.kt @@ -32,6 +32,7 @@ import com.mapbox.geojson.FeatureCollection import com.mapbox.maps.MapboxExperimental import com.mapbox.maps.extension.androidauto.MapboxCarMapObserver import com.mapbox.maps.extension.androidauto.MapboxCarMapSurface +import com.mapbox.maps.extension.androidauto.mapboxMapInstaller import com.mapbox.maps.plugin.delegates.listeners.OnStyleLoadedListener import com.mapbox.navigation.base.route.NavigationRoute @@ -49,15 +50,6 @@ class CarRoutePreviewScreen( private val routesProvider = PreviewRoutesProvider(navigationRoutes) var selectedIndex = 0 - val carRouteLine = CarRouteLine(routePreviewCarContext.mainCarContext, routesProvider) - val carLocationRenderer = CarLocationRenderer(routePreviewCarContext.mainCarContext) - val carSpeedLimitRenderer = CarSpeedLimitRenderer(routePreviewCarContext.mainCarContext) - val carNavigationCamera = CarNavigationCamera( - routePreviewCarContext.mapboxNavigation, - CarCameraMode.OVERVIEW, - CarCameraMode.FOLLOWING, - routesProvider, - ) private val backPressCallback = object : OnBackPressedCallback(true) { @@ -101,28 +93,31 @@ class CarRoutePreviewScreen( init { logAndroidAuto("CarRoutePreviewScreen constructor") + mapboxMapInstaller(routePreviewCarContext.mapboxCarMap) + .onResumed( + CarLocationRenderer(routePreviewCarContext.mainCarContext), + CarSpeedLimitRenderer(routePreviewCarContext.mainCarContext), + CarNavigationCamera( + routePreviewCarContext.mapboxNavigation, + CarCameraMode.OVERVIEW, + CarCameraMode.FOLLOWING, + routesProvider, + ), + CarRouteLine(routePreviewCarContext.mainCarContext, routesProvider), + surfaceListener, + ) + .install() + lifecycle.muteAudioGuidance() lifecycle.addObserver(object : DefaultLifecycleObserver { override fun onResume(owner: LifecycleOwner) { logAndroidAuto("CarRoutePreviewScreen onResume") - routePreviewCarContext.carContext.onBackPressedDispatcher.addCallback( - backPressCallback - ) - routePreviewCarContext.mapboxCarMap.registerObserver(carLocationRenderer) - routePreviewCarContext.mapboxCarMap.registerObserver(carSpeedLimitRenderer) - routePreviewCarContext.mapboxCarMap.registerObserver(carNavigationCamera) - routePreviewCarContext.mapboxCarMap.registerObserver(carRouteLine) - routePreviewCarContext.mapboxCarMap.registerObserver(surfaceListener) + carContext.onBackPressedDispatcher.addCallback(backPressCallback) } override fun onPause(owner: LifecycleOwner) { logAndroidAuto("CarRoutePreviewScreen onPause") backPressCallback.remove() - routePreviewCarContext.mapboxCarMap.unregisterObserver(carLocationRenderer) - routePreviewCarContext.mapboxCarMap.unregisterObserver(carSpeedLimitRenderer) - routePreviewCarContext.mapboxCarMap.unregisterObserver(carNavigationCamera) - routePreviewCarContext.mapboxCarMap.unregisterObserver(carRouteLine) - routePreviewCarContext.mapboxCarMap.unregisterObserver(surfaceListener) } }) } diff --git a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/car/MainCarSession.kt b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/car/MainCarSession.kt index ee6970fa8c1..4bb8abdec73 100644 --- a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/car/MainCarSession.kt +++ b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/car/MainCarSession.kt @@ -17,14 +17,13 @@ import com.mapbox.androidauto.MapboxCarNavigationManager import com.mapbox.androidauto.car.MainCarContext import com.mapbox.androidauto.car.MainScreenManager import com.mapbox.androidauto.car.map.widgets.compass.CarCompassSurfaceRenderer -import com.mapbox.androidauto.car.map.widgets.logo.CarLogoSurfaceRenderer import com.mapbox.androidauto.car.permissions.NeedsLocationPermissionsScreen import com.mapbox.androidauto.deeplink.GeoDeeplinkNavigateAction import com.mapbox.androidauto.internal.logAndroidAuto import com.mapbox.androidauto.notification.CarNotificationInterceptor -import com.mapbox.maps.MapInitOptions import com.mapbox.maps.MapboxExperimental import com.mapbox.maps.extension.androidauto.MapboxCarMap +import com.mapbox.maps.extension.androidauto.mapboxMapInstaller import com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI import com.mapbox.navigation.base.options.NavigationOptions import com.mapbox.navigation.core.lifecycle.MapboxNavigationApp @@ -36,19 +35,21 @@ import kotlinx.coroutines.launch @OptIn(ExperimentalPreviewMapboxNavigationAPI::class, MapboxExperimental::class) class MainCarSession : Session() { + private val carMapStyleLoader = MainCarMapLoader() + private val mapboxCarMap: MapboxCarMap = mapboxMapInstaller() + .onCreated(carMapStyleLoader) + .onResumed(CarCompassSurfaceRenderer(), CarCompassSurfaceRenderer()) + .install() + private var mainCarContext: MainCarContext? = null private lateinit var mainScreenManager: MainScreenManager - private lateinit var mapboxCarMap: MapboxCarMap private lateinit var mapboxNavigationManager: MapboxCarNavigationManager - private val carMapStyleLoader = MainCarMapLoader() private val notificationInterceptor by lazy { CarNotificationInterceptor(carContext, MainCarAppService::class.java) } init { logAndroidAuto("MainCarSession constructor") - val logoSurfaceRenderer = CarLogoSurfaceRenderer() - val compassSurfaceRenderer = CarCompassSurfaceRenderer() MapboxNavigationApp.attach(lifecycleOwner = this) lifecycle.addObserver(object : DefaultLifecycleObserver { @@ -64,8 +65,6 @@ class MainCarSession : Session() { mapboxNavigationManager = MapboxCarNavigationManager(carContext) MapboxNavigationApp.registerObserver(mapboxNavigationManager) - mapboxCarMap = MapboxCarMap(MapInitOptions(context = carContext)) - mapboxCarMap.registerObserver(carMapStyleLoader) val mainCarContext = MainCarContext(carContext, mapboxCarMap) .also { mainCarContext = it } val mainScreenManager = MainScreenManager(mainCarContext) @@ -79,18 +78,6 @@ class MainCarSession : Session() { MapboxNavigationApp.registerObserver(notificationInterceptor) } - override fun onResume(owner: LifecycleOwner) { - logAndroidAuto("MainCarSession onResume") - mapboxCarMap.registerObserver(logoSurfaceRenderer) - mapboxCarMap.registerObserver(compassSurfaceRenderer) - } - - override fun onPause(owner: LifecycleOwner) { - logAndroidAuto("MainCarSession onPause") - mapboxCarMap.unregisterObserver(logoSurfaceRenderer) - mapboxCarMap.unregisterObserver(compassSurfaceRenderer) - } - override fun onStop(owner: LifecycleOwner) { logAndroidAuto("MainCarSession onStop") } @@ -98,7 +85,6 @@ class MainCarSession : Session() { override fun onDestroy(owner: LifecycleOwner) { logAndroidAuto("MainCarSession onDestroy") MapboxNavigationApp.unregisterObserver(mapboxNavigationManager) - mapboxCarMap.unregisterObserver(carMapStyleLoader) mainCarContext = null MapboxNavigationApp.unregisterObserver(notificationInterceptor) }