diff --git a/CHANGELOG.md b/CHANGELOG.md index 37ebfa25bd6..4319b4cf86e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,9 @@ Mapbox welcomes participation and contributions from everyone. - Fixed an issue with restricted road visualization on the route line that occurred during route refreshes. [#6399](https://github.com/mapbox/mapbox-navigation-android/pull/6399) - Improved precision of restricted sections visualization, especially for long routes. [#6399](https://github.com/mapbox/mapbox-navigation-android/pull/6399) - Fixed a rare issue where alternative route would not be vanished until deviation point for `MapboxRouteLineApi#setNavigationRoutes(routes, metadata)` when the route's geometry contained duplicate points. [#6399](https://github.com/mapbox/mapbox-navigation-android/pull/6399) +- Make `NavigationLocationProvider` an open class so it can be extended. [#6420](https://github.com/mapbox/mapbox-navigation-android/pull/6420) +- Make `NavigationLocationProvider` inherit from `MapboxNavigationObserver` so it can be used with `MapboxNavigationApp`. [#6420](https://github.com/mapbox/mapbox-navigation-android/pull/6420) +- Convert `LocationObserver` into a java interface with default functions so the functions are optional and new functions can be added. [#6420](https://github.com/mapbox/mapbox-navigation-android/pull/6420) ## Mapbox Navigation SDK 2.9.0-alpha.4 - 30 September, 2022 ### Changelog diff --git a/examples/src/main/java/com/mapbox/navigation/examples/core/IndependentRouteGenerationActivity.kt b/examples/src/main/java/com/mapbox/navigation/examples/core/IndependentRouteGenerationActivity.kt index 0dc1ecef664..4bb96032ab3 100644 --- a/examples/src/main/java/com/mapbox/navigation/examples/core/IndependentRouteGenerationActivity.kt +++ b/examples/src/main/java/com/mapbox/navigation/examples/core/IndependentRouteGenerationActivity.kt @@ -129,7 +129,6 @@ class IndependentRouteGenerationActivity : AppCompatActivity() { private val locationObserver = object : LocationObserver { private var initialUpdateDone = false - override fun onNewRawLocation(rawLocation: Location) {} override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { val enhancedLocation = locationMatcherResult.enhancedLocation if (!initialUpdateDone) { diff --git a/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxBuildingHighlightActivity.kt b/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxBuildingHighlightActivity.kt index 487793379d6..e4542308df5 100644 --- a/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxBuildingHighlightActivity.kt +++ b/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxBuildingHighlightActivity.kt @@ -149,7 +149,6 @@ class MapboxBuildingHighlightActivity : AppCompatActivity(), OnMapLongClickListe } private val locationObserver = object : LocationObserver { - override fun onNewRawLocation(rawLocation: Location) {} override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { navigationLocationProvider.changePosition( locationMatcherResult.enhancedLocation, diff --git a/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxCustomStyleActivity.kt b/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxCustomStyleActivity.kt index 8b2554964d5..8b34b9fb7ed 100644 --- a/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxCustomStyleActivity.kt +++ b/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxCustomStyleActivity.kt @@ -134,7 +134,6 @@ class MapboxCustomStyleActivity : AppCompatActivity(), OnMapLongClickListener { private val replayProgressObserver = ReplayProgressObserver(mapboxReplayer) private val locationObserver = object : LocationObserver { - override fun onNewRawLocation(rawLocation: Location) {} override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { navigationLocationProvider.changePosition( locationMatcherResult.enhancedLocation, diff --git a/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxJunctionActivity.kt b/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxJunctionActivity.kt index 0c1e8a83317..b80e8d175a8 100644 --- a/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxJunctionActivity.kt +++ b/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxJunctionActivity.kt @@ -129,7 +129,6 @@ class MapboxJunctionActivity : AppCompatActivity(), OnMapLongClickListener { private val replayProgressObserver = ReplayProgressObserver(mapboxReplayer) private val locationObserver = object : LocationObserver { - override fun onNewRawLocation(rawLocation: Location) {} override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { navigationLocationProvider.changePosition( locationMatcherResult.enhancedLocation, diff --git a/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxManeuverActivity.kt b/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxManeuverActivity.kt index 3c596e60b0f..4c665f5c032 100644 --- a/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxManeuverActivity.kt +++ b/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxManeuverActivity.kt @@ -132,9 +132,6 @@ class MapboxManeuverActivity : AppCompatActivity(), OnMapLongClickListener { } private val locationObserver = object : LocationObserver { - - override fun onNewRawLocation(rawLocation: Location) {} - override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { navigationLocationProvider.changePosition( locationMatcherResult.enhancedLocation, diff --git a/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxNavigationActivity.kt b/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxNavigationActivity.kt index 7f4b5aac9fc..fb3cee170b1 100644 --- a/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxNavigationActivity.kt +++ b/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxNavigationActivity.kt @@ -178,10 +178,6 @@ class MapboxNavigationActivity : AppCompatActivity() { /* ----- Location and route progress callbacks ----- */ private val locationObserver = object : LocationObserver { - override fun onNewRawLocation(rawLocation: Location) { - // not handled - } - override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { // update location puck's position on the map navigationLocationProvider.changePosition( diff --git a/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxRouteLineAndArrowActivity.kt b/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxRouteLineAndArrowActivity.kt index 1a993a1ef9d..08582725188 100644 --- a/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxRouteLineAndArrowActivity.kt +++ b/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxRouteLineAndArrowActivity.kt @@ -321,7 +321,6 @@ class MapboxRouteLineAndArrowActivity : AppCompatActivity(), OnMapLongClickListe } private val locationObserver = object : LocationObserver { - override fun onNewRawLocation(rawLocation: Location) {} override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { navigationLocationProvider.changePosition( locationMatcherResult.enhancedLocation, diff --git a/examples/src/main/java/com/mapbox/navigation/examples/core/camera/MapboxCameraAnimationsActivity.kt b/examples/src/main/java/com/mapbox/navigation/examples/core/camera/MapboxCameraAnimationsActivity.kt index 78f9c61a382..9b683c50839 100644 --- a/examples/src/main/java/com/mapbox/navigation/examples/core/camera/MapboxCameraAnimationsActivity.kt +++ b/examples/src/main/java/com/mapbox/navigation/examples/core/camera/MapboxCameraAnimationsActivity.kt @@ -146,9 +146,6 @@ class MapboxCameraAnimationsActivity : private val poiSource = geoJsonSource("circle_source") {}.data("") private val locationObserver = object : LocationObserver { - - override fun onNewRawLocation(rawLocation: Location) {} - override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { val transitionOptions: (ValueAnimator.() -> Unit) = if (locationMatcherResult.isTeleport) { diff --git a/instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/utils/idling/FirstLocationIdlingResource.kt b/instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/utils/idling/FirstLocationIdlingResource.kt index ca0fe9f9b19..503fbebd08c 100644 --- a/instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/utils/idling/FirstLocationIdlingResource.kt +++ b/instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/utils/idling/FirstLocationIdlingResource.kt @@ -54,10 +54,6 @@ class FirstLocationIdlingResource( /** Used to communicate with [MapboxNavigation.registerLocationObserver] **/ private val locationObserver = object : LocationObserver { - override fun onNewRawLocation(rawLocation: Location) { - // Do nothing - } - override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { if (firstLocation == null) { firstLocation = locationMatcherResult.enhancedLocation diff --git a/libnavigation-core/api/current.txt b/libnavigation-core/api/current.txt index a242f21740c..16bee517f14 100644 --- a/libnavigation-core/api/current.txt +++ b/libnavigation-core/api/current.txt @@ -932,8 +932,8 @@ package com.mapbox.navigation.core.trip.session { } @UiThread public interface LocationObserver { - method public void onNewLocationMatcherResult(com.mapbox.navigation.core.trip.session.LocationMatcherResult locationMatcherResult); - method public void onNewRawLocation(android.location.Location rawLocation); + method public default void onNewLocationMatcherResult(com.mapbox.navigation.core.trip.session.LocationMatcherResult); + method public default void onNewRawLocation(android.location.Location); } public abstract sealed class NavigationSessionState { diff --git a/libnavigation-core/src/main/java/com/mapbox/navigation/core/trip/session/LocationObserver.java b/libnavigation-core/src/main/java/com/mapbox/navigation/core/trip/session/LocationObserver.java new file mode 100644 index 00000000000..729ae5c29ab --- /dev/null +++ b/libnavigation-core/src/main/java/com/mapbox/navigation/core/trip/session/LocationObserver.java @@ -0,0 +1,33 @@ +package com.mapbox.navigation.core.trip.session; + +import android.location.Location; + +import androidx.annotation.NonNull; +import androidx.annotation.UiThread; + +/** + * An interface which enables listening to location updates + * + * @see LocationMatcherResult + */ +@UiThread +public interface LocationObserver { + + /** + * Invoked as soon as a new [Location] has been received. + * + * @param rawLocation un-snapped update + */ + default void onNewRawLocation(@NonNull Location rawLocation) { + // Override to capture + } + + /** + * Provides the best possible location update, snapped to the route or map-matched to the road if possible. + * + * @param locationMatcherResult details about the status of the enhanced location. + */ + default void onNewLocationMatcherResult(@NonNull LocationMatcherResult locationMatcherResult) { + // Override to capture + } +} diff --git a/libnavigation-core/src/main/java/com/mapbox/navigation/core/trip/session/LocationObserver.kt b/libnavigation-core/src/main/java/com/mapbox/navigation/core/trip/session/LocationObserver.kt deleted file mode 100644 index e76bd420b12..00000000000 --- a/libnavigation-core/src/main/java/com/mapbox/navigation/core/trip/session/LocationObserver.kt +++ /dev/null @@ -1,27 +0,0 @@ -package com.mapbox.navigation.core.trip.session - -import android.location.Location -import androidx.annotation.UiThread - -/** - * An interface which enables listening to location updates - * - * @see [LocationMatcherResult] - */ -@UiThread -interface LocationObserver { - - /** - * Invoked as soon as a new [Location] has been received. - * - * @param rawLocation un-snapped update - */ - fun onNewRawLocation(rawLocation: Location) - - /** - * Provides the best possible location update, snapped to the route or map-matched to the road if possible. - * - * @param locationMatcherResult details about the status of the enhanced location. - */ - fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) -} diff --git a/libnavui-maps/api/current.txt b/libnavui-maps/api/current.txt index 43ed13aaee7..4d1afd24bab 100644 --- a/libnavui-maps/api/current.txt +++ b/libnavui-maps/api/current.txt @@ -717,15 +717,23 @@ package com.mapbox.navigation.ui.maps.installer { package com.mapbox.navigation.ui.maps.location { - public final class NavigationLocationProvider implements com.mapbox.maps.plugin.locationcomponent.LocationProvider { + public class NavigationLocationProvider implements com.mapbox.navigation.core.trip.session.LocationObserver com.mapbox.maps.plugin.locationcomponent.LocationProvider com.mapbox.navigation.core.lifecycle.MapboxNavigationObserver { ctor public NavigationLocationProvider(); - method public void changePosition(android.location.Location location, java.util.List keyPoints = emptyList(), kotlin.jvm.functions.Function1? latLngTransitionOptions = null, kotlin.jvm.functions.Function1? bearingTransitionOptions = null); - method public java.util.List getLastKeyPoints(); - method public android.location.Location? getLastLocation(); - method public void registerLocationConsumer(com.mapbox.maps.plugin.locationcomponent.LocationConsumer locationConsumer); - method public void unRegisterLocationConsumer(com.mapbox.maps.plugin.locationcomponent.LocationConsumer locationConsumer); + method @CallSuper public final void changePosition(android.location.Location location, java.util.List keyPoints = emptyList(), kotlin.jvm.functions.Function1? latLngTransitionOptions = null, kotlin.jvm.functions.Function1? bearingTransitionOptions = null); + method public final java.util.List getLastKeyPoints(); + method public final android.location.Location? getLastLocation(); + method public static final com.mapbox.navigation.ui.maps.location.NavigationLocationProvider getRegisteredInstance(); + method @CallSuper public void onAttached(com.mapbox.navigation.core.MapboxNavigation mapboxNavigation); + method @CallSuper public void onDetached(com.mapbox.navigation.core.MapboxNavigation mapboxNavigation); + method public final void registerLocationConsumer(com.mapbox.maps.plugin.locationcomponent.LocationConsumer locationConsumer); + method public final void unRegisterLocationConsumer(com.mapbox.maps.plugin.locationcomponent.LocationConsumer locationConsumer); property public final java.util.List lastKeyPoints; property public final android.location.Location? lastLocation; + field public static final com.mapbox.navigation.ui.maps.location.NavigationLocationProvider.Companion Companion; + } + + public static final class NavigationLocationProvider.Companion { + method public com.mapbox.navigation.ui.maps.location.NavigationLocationProvider getRegisteredInstance(); } } diff --git a/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/location/NavigationLocationProvider.kt b/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/location/NavigationLocationProvider.kt index ba1ceae20be..d99f177febb 100644 --- a/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/location/NavigationLocationProvider.kt +++ b/libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/location/NavigationLocationProvider.kt @@ -3,6 +3,7 @@ package com.mapbox.navigation.ui.maps.location import android.animation.ValueAnimator import android.annotation.SuppressLint import android.location.Location +import androidx.annotation.CallSuper import com.mapbox.geojson.Point import com.mapbox.maps.plugin.locationcomponent.LocationComponentConstants import com.mapbox.maps.plugin.locationcomponent.LocationComponentPlugin @@ -10,6 +11,9 @@ import com.mapbox.maps.plugin.locationcomponent.LocationConsumer import com.mapbox.maps.plugin.locationcomponent.LocationProvider import com.mapbox.maps.plugin.locationcomponent.OnIndicatorPositionChangedListener import com.mapbox.navigation.core.MapboxNavigation +import com.mapbox.navigation.core.lifecycle.MapboxNavigationApp +import com.mapbox.navigation.core.lifecycle.MapboxNavigationObserver +import com.mapbox.navigation.core.trip.session.LocationMatcherResult import com.mapbox.navigation.core.trip.session.LocationObserver import com.mapbox.navigation.ui.maps.internal.location.PuckAnimationEvaluator import com.mapbox.navigation.utils.internal.ifNonNull @@ -53,7 +57,10 @@ import java.util.concurrent.CopyOnWriteArraySet * } * ``` */ -class NavigationLocationProvider : LocationProvider { +open class NavigationLocationProvider : + LocationProvider, + LocationObserver, + MapboxNavigationObserver { private val locationConsumers = CopyOnWriteArraySet() @@ -73,6 +80,17 @@ class NavigationLocationProvider : LocationProvider { var lastKeyPoints: List = emptyList() private set + /** + * Automatically updated when this class is registered to [MapboxNavigationApp] + */ + @CallSuper + override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { + changePosition( + locationMatcherResult.enhancedLocation, + locationMatcherResult.keyPoints, + ) + } + /** * Register the location consumer to the Location Provider. * @@ -81,7 +99,7 @@ class NavigationLocationProvider : LocationProvider { * @param locationConsumer */ @SuppressLint("MissingPermission") - override fun registerLocationConsumer(locationConsumer: LocationConsumer) { + final override fun registerLocationConsumer(locationConsumer: LocationConsumer) { if (locationConsumers.add(locationConsumer)) { ifNonNull(lastLocation, lastKeyPoints) { location, keyPoints -> locationConsumer.notifyLocationUpdates( @@ -103,7 +121,7 @@ class NavigationLocationProvider : LocationProvider { * * @param locationConsumer */ - override fun unRegisterLocationConsumer(locationConsumer: LocationConsumer) { + final override fun unRegisterLocationConsumer(locationConsumer: LocationConsumer) { locationConsumers.remove(locationConsumer) } @@ -122,6 +140,7 @@ class NavigationLocationProvider : LocationProvider { * @see LocationObserver * @see MapboxNavigation.registerLocationObserver */ + @CallSuper fun changePosition( location: Location, keyPoints: List = emptyList(), @@ -140,6 +159,27 @@ class NavigationLocationProvider : LocationProvider { lastKeyPoints = keyPoints } + /** + * Use [getRegisteredInstance] to share a single instance of the [NavigationLocationProvider]. + * + * @see [MapboxNavigationApp] + */ + @CallSuper + override fun onAttached(mapboxNavigation: MapboxNavigation) { + mapboxNavigation.registerLocationObserver(this) + } + + /** + * Disabled automatically with the [MapboxNavigationApp]. You can manually disable with + * [MapboxNavigationApp.unregisterObserver]. + * + * @see [MapboxNavigationApp] + */ + @CallSuper + override fun onDetached(mapboxNavigation: MapboxNavigation) { + mapboxNavigation.unregisterLocationObserver(this) + } + private fun LocationConsumer.notifyLocationUpdates( location: Location, keyPoints: List, @@ -176,4 +216,14 @@ class NavigationLocationProvider : LocationProvider { clientOptions?.also { apply(it) } } } + + companion object { + /** + * Get the registered instance or create one and register it to [MapboxNavigationApp]. + */ + @JvmStatic + fun getRegisteredInstance(): NavigationLocationProvider = MapboxNavigationApp + .getObservers(NavigationLocationProvider::class).firstOrNull() + ?: NavigationLocationProvider().also { MapboxNavigationApp.registerObserver(it) } + } } diff --git a/libnavui-maps/src/test/java/com/mapbox/navigation/ui/maps/location/NavigationLocationProviderTest.kt b/libnavui-maps/src/test/java/com/mapbox/navigation/ui/maps/location/NavigationLocationProviderTest.kt index 9a97c5cc854..b765a4218bf 100644 --- a/libnavui-maps/src/test/java/com/mapbox/navigation/ui/maps/location/NavigationLocationProviderTest.kt +++ b/libnavui-maps/src/test/java/com/mapbox/navigation/ui/maps/location/NavigationLocationProviderTest.kt @@ -4,21 +4,23 @@ import android.animation.ValueAnimator import android.location.Location import com.mapbox.geojson.Point import com.mapbox.maps.plugin.locationcomponent.LocationConsumer +import com.mapbox.navigation.core.MapboxNavigation +import com.mapbox.navigation.core.trip.session.LocationMatcherResult +import com.mapbox.navigation.core.trip.session.LocationObserver import io.mockk.every +import io.mockk.just import io.mockk.mockk +import io.mockk.runs +import io.mockk.slot import io.mockk.verify import org.junit.Assert.assertEquals -import org.junit.Before +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue import org.junit.Test class NavigationLocationProviderTest { - private lateinit var navigationLocationProvider: NavigationLocationProvider - - @Before - fun setup() { - navigationLocationProvider = NavigationLocationProvider() - } + private val navigationLocationProvider = NavigationLocationProvider() @Test fun `location is cached`() { @@ -184,4 +186,68 @@ class NavigationLocationProviderTest { consumer.onBearingUpdated(any()) } } + + @Test + fun `onAttached will register a LocationObserver and receive raw locations`() { + val locationObserverSlot = slot() + val mapboxNavigation: MapboxNavigation = mockk { + every { registerLocationObserver(capture(locationObserverSlot)) } just runs + } + val rawLocationSlot = mutableListOf() + val navigationLocationProvider = object : NavigationLocationProvider() { + override fun onNewRawLocation(rawLocation: Location) { + rawLocationSlot.add(rawLocation) + } + } + + // Expect 3 locations + navigationLocationProvider.onAttached(mapboxNavigation) + locationObserverSlot.captured.onNewRawLocation(mockk()) + locationObserverSlot.captured.onNewRawLocation(mockk()) + locationObserverSlot.captured.onNewRawLocation(mockk()) + + assertEquals(3, rawLocationSlot.size) + } + + @Test + fun `onAttached will register a LocationObserver and receive map matched locations`() { + val locationObserverSlot = slot() + val mapboxNavigation: MapboxNavigation = mockk { + every { registerLocationObserver(capture(locationObserverSlot)) } just runs + } + val locationMatcherResultSlot = mutableListOf() + val navigationLocationProvider = object : NavigationLocationProvider() { + override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { + super.onNewLocationMatcherResult(locationMatcherResult) + locationMatcherResultSlot.add(locationMatcherResult) + } + } + + navigationLocationProvider.onAttached(mapboxNavigation) + locationObserverSlot.captured.onNewLocationMatcherResult( + mockk(relaxed = true) { every { isOffRoad } returns false } + ) + locationObserverSlot.captured.onNewLocationMatcherResult( + mockk(relaxed = true) { every { isOffRoad } returns true } + ) + + assertEquals(2, locationMatcherResultSlot.size) + assertFalse(locationMatcherResultSlot[0].isOffRoad) + assertTrue(locationMatcherResultSlot[1].isOffRoad) + } + + @Test + fun `onDetached will unregister a LocationObserver and receive raw locations`() { + val mapboxNavigation: MapboxNavigation = mockk(relaxed = true) + val rawLocationSlot = mutableListOf() + val navigationLocationProvider = object : NavigationLocationProvider() { + override fun onNewRawLocation(rawLocation: Location) { + rawLocationSlot.add(rawLocation) + } + } + + navigationLocationProvider.onDetached(mapboxNavigation) + + verify { mapboxNavigation.unregisterLocationObserver(navigationLocationProvider) } + } } diff --git a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/lifecycle/viewmodel/DropInLocationViewModel.kt b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/lifecycle/viewmodel/DropInLocationViewModel.kt index b8e79a68f59..f64e9873356 100644 --- a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/lifecycle/viewmodel/DropInLocationViewModel.kt +++ b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/lifecycle/viewmodel/DropInLocationViewModel.kt @@ -26,10 +26,6 @@ class DropInLocationViewModel : ViewModel() { val locationLiveData: LiveData = _locationLiveData private val locationObserver: LocationObserver = object : LocationObserver { - override fun onNewRawLocation(rawLocation: Location) { - // no op - } - override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { navigationLocationProvider.changePosition( locationMatcherResult.enhancedLocation, diff --git a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/AlternativeRouteActivity.kt b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/AlternativeRouteActivity.kt index 312d96b50ac..defdc1df94d 100644 --- a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/AlternativeRouteActivity.kt +++ b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/AlternativeRouteActivity.kt @@ -166,10 +166,6 @@ class AlternativeRouteActivity : AppCompatActivity(), OnMapLongClickListener { } private val locationObserver: LocationObserver = object : LocationObserver { - override fun onNewRawLocation(rawLocation: Location) { - Log.d(TAG, "raw location $rawLocation") - } - override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { navigationLocationProvider.changePosition(locationMatcherResult.enhancedLocation) } diff --git a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/FeedbackActivity.kt b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/FeedbackActivity.kt index d13347362f0..abe2321d44a 100644 --- a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/FeedbackActivity.kt +++ b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/FeedbackActivity.kt @@ -37,7 +37,6 @@ import com.mapbox.navigation.core.telemetry.events.FeedbackHelper import com.mapbox.navigation.core.telemetry.events.FeedbackMetadata import com.mapbox.navigation.core.telemetry.events.FeedbackMetadataWrapper import com.mapbox.navigation.core.trip.session.LocationMatcherResult -import com.mapbox.navigation.core.trip.session.LocationObserver import com.mapbox.navigation.core.trip.session.TripSessionState import com.mapbox.navigation.qa_test_app.databinding.FeedbackActivityBinding import com.mapbox.navigation.qa_test_app.utils.Utils @@ -62,17 +61,14 @@ class FeedbackActivity : AppCompatActivity() { FeedbackActivityBinding.inflate(layoutInflater) } - private val navigationLocationProvider = NavigationLocationProvider() - private val mapCamera: CameraAnimationsPlugin by lazy { binding.mapView.camera } - private val locationObserver = object : LocationObserver { - override fun onNewRawLocation(rawLocation: Location) = Unit - + private val navigationLocationProvider = object : NavigationLocationProvider() { override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { - updateCamera(locationMatcherResult.enhancedLocation, locationMatcherResult.keyPoints) + super.onNewLocationMatcherResult(locationMatcherResult) + updateCamera(locationMatcherResult.enhancedLocation) } } @@ -136,12 +132,12 @@ class FeedbackActivity : AppCompatActivity() { setLocationProvider(navigationLocationProvider) enabled = true } - mapboxNavigation.registerLocationObserver(locationObserver) mapboxNavigation.registerRoutesObserver(routesObserver) + navigationLocationProvider.onAttached(mapboxNavigation) } override fun onDetached(mapboxNavigation: MapboxNavigation) { - mapboxNavigation.unregisterLocationObserver(locationObserver) + navigationLocationProvider.onDetached(mapboxNavigation) mapboxNavigation.unregisterRoutesObserver(routesObserver) } } @@ -173,7 +169,7 @@ class FeedbackActivity : AppCompatActivity() { object : LocationEngineCallback { override fun onSuccess(result: LocationEngineResult) { result.lastLocation?.let { - updateCamera(it, emptyList()) + updateCamera(it) } } @@ -266,8 +262,7 @@ class FeedbackActivity : AppCompatActivity() { sharedPrefs.registerOnSharedPreferenceChangeListener(spListener) } - private fun updateCamera(location: Location, keyPoints: List) { - navigationLocationProvider.changePosition(location, keyPoints, null, null) + private fun updateCamera(location: Location) { val mapAnimationOptionsBuilder = MapAnimationOptions.Builder() mapAnimationOptionsBuilder.duration(1500L) mapCamera.easeTo( diff --git a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/InactiveRouteStylingActivity.kt b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/InactiveRouteStylingActivity.kt index 201d7ac46b7..afb8354a55c 100644 --- a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/InactiveRouteStylingActivity.kt +++ b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/InactiveRouteStylingActivity.kt @@ -4,7 +4,6 @@ import android.annotation.SuppressLint import android.graphics.Color import android.location.Location import android.os.Bundle -import android.util.Log import android.view.View import androidx.appcompat.app.AppCompatActivity import com.mapbox.api.directions.v5.models.DirectionsRoute @@ -175,10 +174,6 @@ class InactiveRouteStylingActivity : AppCompatActivity() { } private val locationObserver = object : LocationObserver { - override fun onNewRawLocation(rawLocation: Location) { - Log.d(TAG, "raw location $rawLocation") - } - override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { if (locationMatcherResult.enhancedLocation.provider == "ReplayRoute") { navigationLocationProvider.changePosition( diff --git a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/InactiveRouteStylingWithRestrictionsActivity.kt b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/InactiveRouteStylingWithRestrictionsActivity.kt index 030cbb26140..fc9b70f4514 100644 --- a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/InactiveRouteStylingWithRestrictionsActivity.kt +++ b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/InactiveRouteStylingWithRestrictionsActivity.kt @@ -4,7 +4,6 @@ import android.annotation.SuppressLint import android.graphics.Color import android.location.Location import android.os.Bundle -import android.util.Log import android.view.View import androidx.appcompat.app.AppCompatActivity import com.mapbox.api.directions.v5.models.DirectionsRoute @@ -173,10 +172,6 @@ class InactiveRouteStylingWithRestrictionsActivity : AppCompatActivity() { } private val locationObserver = object : LocationObserver { - override fun onNewRawLocation(rawLocation: Location) { - Log.d(TAG, "raw location $rawLocation") - } - override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { if (locationMatcherResult.enhancedLocation.provider == "ReplayRoute") { navigationLocationProvider.changePosition( diff --git a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/base/BaseNavigationActivity.kt b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/base/BaseNavigationActivity.kt index c9a85623d56..deb378098fb 100644 --- a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/base/BaseNavigationActivity.kt +++ b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/base/BaseNavigationActivity.kt @@ -133,9 +133,6 @@ abstract class BaseNavigationActivity : AppCompatActivity(), OnMapLongClickListe lateinit var viewportDataSource: MapboxNavigationViewportDataSource private val locationObserver = object : LocationObserver { - - override fun onNewRawLocation(rawLocation: Location) {} - override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { viewportDataSource.onLocationChanged(locationMatcherResult.enhancedLocation) viewportDataSource.evaluate() diff --git a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/customnavview/MapboxNavigationViewCustomizedActivity.kt b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/customnavview/MapboxNavigationViewCustomizedActivity.kt index 649138f2db1..5678f373b86 100644 --- a/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/customnavview/MapboxNavigationViewCustomizedActivity.kt +++ b/qa-test-app/src/main/java/com/mapbox/navigation/qa_test_app/view/customnavview/MapboxNavigationViewCustomizedActivity.kt @@ -198,11 +198,6 @@ class MapboxNavigationViewCustomizedActivity : DrawerActivity() { } private val locationObserver = object : LocationObserver { - - override fun onNewRawLocation(rawLocation: Location) { - // no impl - } - override fun onNewLocationMatcherResult(locationMatcherResult: LocationMatcherResult) { lastLocation = locationMatcherResult.enhancedLocation }