diff --git a/android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/CarCameraController.kt b/android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/CarCameraController.kt index 7b762a3cbe..5bbe8c6696 100644 --- a/android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/CarCameraController.kt +++ b/android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/CarCameraController.kt @@ -57,6 +57,7 @@ class CarCameraController : MapboxCarMapObserver { distanceX: Float, distanceY: Float ) { + super.onScroll(mapboxCarMapSurface, visibleCenter, distanceX, distanceY) isTrackingPuck = false } } diff --git a/android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/CarMapWidgets.kt b/android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/CarMapWidgets.kt index 7df1abffa1..6ad22dfa99 100644 --- a/android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/CarMapWidgets.kt +++ b/android-auto-app/src/main/java/com/mapbox/maps/testapp/auto/car/CarMapWidgets.kt @@ -5,20 +5,39 @@ import com.mapbox.maps.extension.androidauto.MapboxCarMapObserver import com.mapbox.maps.extension.androidauto.MapboxCarMapSurface import com.mapbox.maps.extension.androidauto.widgets.CompassWidget import com.mapbox.maps.extension.androidauto.widgets.LogoWidget +import com.mapbox.maps.plugin.delegates.listeners.OnCameraChangeListener +/** + * Note that the Widgets are only available when using android auto extension together with the + * Android Maps SDK v10.4.0 and above, otherwise you will get compilation errors. + */ @OptIn(MapboxExperimental::class) class CarMapWidgets : MapboxCarMapObserver { + private lateinit var logoWidget: LogoWidget + private lateinit var compassWidget: CompassWidget + private lateinit var onCameraChangeListener: OnCameraChangeListener override fun onAttached(mapboxCarMapSurface: MapboxCarMapSurface) { super.onAttached(mapboxCarMapSurface) with(mapboxCarMapSurface) { - mapSurface.addWidget(LogoWidget(carContext)) - mapSurface.addWidget( - CompassWidget( - carContext, - marginX = 26f, - marginY = 120f, - ) + logoWidget = LogoWidget(carContext) + compassWidget = CompassWidget( + carContext, + marginX = 26f, + marginY = 120f, ) + onCameraChangeListener = OnCameraChangeListener { compassWidget.setRotation(-mapSurface.getMapboxMap().cameraState.bearing.toFloat()) } + mapSurface.addWidget(logoWidget) + mapSurface.addWidget(compassWidget) + mapSurface.getMapboxMap().addOnCameraChangeListener(onCameraChangeListener) + } + } + + override fun onDetached(mapboxCarMapSurface: MapboxCarMapSurface) { + super.onDetached(mapboxCarMapSurface) + with(mapboxCarMapSurface) { + mapSurface.getMapboxMap().removeOnCameraChangeListener(onCameraChangeListener) + mapSurface.removeWidget(logoWidget) + mapSurface.removeWidget(compassWidget) } } } \ No newline at end of file diff --git a/extension-androidauto/README.md b/extension-androidauto/README.md index 05e565a100..b9597ee5b1 100644 --- a/extension-androidauto/README.md +++ b/extension-androidauto/README.md @@ -32,11 +32,12 @@ allprojects { // In your build.gradle, add the extension with your other dependencies. dependencies { - implementation 'com.mapbox.extension:maps-androidauto:10.4.+' + implementation 'com.mapbox.extension:maps-androidauto:0.1.0' - // Pick your versions of mapbox map and android auto. - implementation 'androidx.car.app:app:1.+' - implementation 'com.mapbox.maps:android:10.4.+' + // Pick your versions of Android Mapbox Map SDK + // Note that Android Auto extenison is compatibile with Maps SDK v10.0+, however some Android Auto features like Widgets requires Map SDK v10.4.0+ + // See the detailed feature compatibility table below + implementation 'com.mapbox.maps:android:10.4.0' } ``` @@ -131,6 +132,24 @@ class MyCustomMapExperience : MapboxCarMapObserver { } ``` -#### Dependencies +## Compatibility with Maps SDK v10 +The Android Auto extension is released separately from the Android Maps SDK v10 and has a compileOnly dependency. When using the Android Auto extension you need to include a compatible Maps SDK. The feature compatibility checklist can be found below. + +Below is the full feature compatibility table: + +Features | Supported? | Compatible Maps SDK version +------------- | ------------- | ------------- +Map rendering | ✅ | v10.0+ +Runtime styling | ✅ | v10.0+ +Camera animation | ✅ | v10.0+ +Viewport plugin | ✅ | v10.0+ +Location Component plugin | ✅ | v10.0+ +Gestures(scroll and scale) | ✅ | v10.0+ +Annotation plugin | ✅ | v10.0+ +Logo Widget | ✅ | v10.4+ +Compass Widget | ✅ | v10.4+ +View annotation plugin | ❌ | - +Scale bar plugin | ❌ | - +Attribution | ❌ | - View [LICENSE.md](LICENSE.md) for all dependencies used by this extension. diff --git a/extension-androidauto/build.gradle.kts b/extension-androidauto/build.gradle.kts index 4c5bab85c1..edb9538acc 100644 --- a/extension-androidauto/build.gradle.kts +++ b/extension-androidauto/build.gradle.kts @@ -25,7 +25,7 @@ dependencies { compileOnly(project(":sdk")) testImplementation(project(":sdk")) - implementation(Dependencies.googleCarAppLibrary) + api(Dependencies.googleCarAppLibrary) implementation(Dependencies.kotlin) implementation(Dependencies.androidxCoreKtx) implementation(Dependencies.androidxAnnotations) diff --git a/extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/widgets/CompassWidget.kt b/extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/widgets/CompassWidget.kt index aa84448d20..a430178819 100644 --- a/extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/widgets/CompassWidget.kt +++ b/extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/widgets/CompassWidget.kt @@ -10,6 +10,10 @@ import com.mapbox.maps.renderer.widget.WidgetPosition /** * Widget shows compass. Positioned in the top right corner by default. * + * Note: This feature is only available for Android Maps SDK v10.4.0 and above + * + * @since Maps SDK v10.4.0 + * * @param position position of compass * @param marginX horizontal margin in pixels * @param marginY vertical margin in pixels diff --git a/extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/widgets/LogoWidget.kt b/extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/widgets/LogoWidget.kt index d070b5eed9..8939776609 100644 --- a/extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/widgets/LogoWidget.kt +++ b/extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/widgets/LogoWidget.kt @@ -10,6 +10,10 @@ import com.mapbox.maps.renderer.widget.WidgetPosition /** * Widget shows compass. Positioned in the bottom left corner by default. * + * Note: This feature is only available for Android Maps SDK v10.4.0 and above + * + * @since Maps SDK v10.4.0 + * * @param position position of logo * @param marginX horizontal margin in pixels * @param marginY vertical margin in pixels