@@ -57,7 +57,9 @@ import com.mapbox.navigation.core.history.MapboxHistoryReader
5757import com.mapbox.navigation.core.history.MapboxHistoryRecorder
5858import com.mapbox.navigation.core.internal.ReachabilityService
5959import com.mapbox.navigation.core.internal.telemetry.CustomEvent
60+ import com.mapbox.navigation.core.internal.telemetry.TelemetryAndroidAutoInterface
6061import com.mapbox.navigation.core.internal.telemetry.UserFeedbackCallback
62+ import com.mapbox.navigation.core.internal.telemetry.UserFeedbackSubscriber
6163import com.mapbox.navigation.core.internal.utils.InternalUtils
6264import com.mapbox.navigation.core.internal.utils.ModuleParams
6365import com.mapbox.navigation.core.internal.utils.isInternalImplementation
@@ -87,7 +89,8 @@ import com.mapbox.navigation.core.routeoptions.RouteOptionsUpdater
8789import com.mapbox.navigation.core.routerefresh.RouteRefreshController
8890import com.mapbox.navigation.core.routerefresh.RouteRefreshControllerProvider
8991import com.mapbox.navigation.core.routerefresh.RouteRefreshStatesObserver
90- import com.mapbox.navigation.core.telemetry.MapboxNavigationTelemetry
92+ import com.mapbox.navigation.core.telemetry.ApplicationLifecycleMonitor
93+ import com.mapbox.navigation.core.telemetry.NavigationTelemetry
9194import com.mapbox.navigation.core.telemetry.events.FeedbackEvent
9295import com.mapbox.navigation.core.telemetry.events.FeedbackHelper
9396import com.mapbox.navigation.core.telemetry.events.FeedbackMetadata
@@ -118,7 +121,6 @@ import com.mapbox.navigation.core.trip.session.eh.GraphAccessor
118121import com.mapbox.navigation.core.trip.session.eh.RoadObjectMatcher
119122import com.mapbox.navigation.core.trip.session.eh.RoadObjectsStore
120123import com.mapbox.navigation.metrics.MapboxMetricsReporter
121- import com.mapbox.navigation.metrics.internal.TelemetryUtilsDelegate
122124import com.mapbox.navigation.navigator.internal.MapboxNativeNavigator
123125import com.mapbox.navigation.navigator.internal.NavigatorLoader
124126import com.mapbox.navigation.navigator.internal.router.RouterInterfaceAdapter
@@ -250,6 +252,11 @@ class MapboxNavigation @VisibleForTesting internal constructor(
250252 private val mainJobController = threadController.getMainScopeAndRootJob()
251253 private val directionsSession: DirectionsSession
252254 private var navigator: MapboxNativeNavigator
255+ private var navigationTelemetry: NavigationTelemetry
256+ internal val telemetryAndroidAutoInterface: TelemetryAndroidAutoInterface
257+ get() = navigationTelemetry
258+ internal val userFeedbackSubscriber: UserFeedbackSubscriber
259+ get() = navigationTelemetry
253260 private var historyRecorderHandles: NavigatorLoader .HistoryRecorderHandles
254261 private val tripService: TripService
255262 private val tripSession: TripSession
@@ -458,6 +465,11 @@ class MapboxNavigation @VisibleForTesting internal constructor(
458465 } else {
459466 RouterInterfaceAdapter (moduleRouter, ::getNavigationRoutes)
460467 },
468+ NavigationComponentProvider .createEventsMetadataInterface(
469+ navigationOptions.applicationContext,
470+ ApplicationLifecycleMonitor (navigationOptions.applicationContext),
471+ navigationOptions.eventsAppMetadata
472+ ),
461473 )
462474 assignHistoryRecorders()
463475 navigationSession = NavigationComponentProvider .createNavigationSession()
@@ -524,24 +536,19 @@ class MapboxNavigation @VisibleForTesting internal constructor(
524536 arrivalProgressObserver
525537 )
526538
539+ navigationTelemetry = NavigationTelemetry (tripSession) { navigator.telemetry }
540+
527541 ifNonNull(accessToken) { token ->
528- runInTelemetryContext { telemetry ->
529- logD(
530- " MapboxMetricsReporter.init from MapboxNavigation main" ,
531- telemetry.LOG_CATEGORY
532- )
533- MapboxMetricsReporter .init (
534- navigationOptions.applicationContext,
535- token,
536- obtainUserAgent()
537- )
538- MapboxMetricsReporter .toggleLogging(navigationOptions.isDebugLoggingEnabled)
539- telemetry.initialize(
540- this ,
541- navigationOptions,
542- MapboxMetricsReporter ,
543- )
544- }
542+ logD(
543+ " MapboxMetricsReporter.init from MapboxNavigation main" ,
544+ LOG_CATEGORY
545+ )
546+ MapboxMetricsReporter .init (
547+ navigationOptions.applicationContext,
548+ token,
549+ obtainUserAgent()
550+ )
551+ MapboxMetricsReporter .toggleLogging(navigationOptions.isDebugLoggingEnabled)
545552 }
546553
547554 val routeOptionsProvider = RouteOptionsUpdater ()
@@ -1208,9 +1215,6 @@ class MapboxNavigation @VisibleForTesting internal constructor(
12081215 historyRecordingStateHandler.unregisterAllStateChangeObservers()
12091216 historyRecordingStateHandler.unregisterAllCopilotSessionObservers()
12101217 developerMetadataAggregator.unregisterAllObservers()
1211- runInTelemetryContext { telemetry ->
1212- telemetry.destroy(this @MapboxNavigation)
1213- }
12141218 threadController.cancelAllNonUICoroutines()
12151219 threadController.cancelAllUICoroutines()
12161220 ifNonNull(reachabilityObserverId) {
@@ -1617,17 +1621,15 @@ class MapboxNavigation @VisibleForTesting internal constructor(
16171621 feedbackMetadata : FeedbackMetadata ? ,
16181622 userFeedbackCallback : UserFeedbackCallback ? ,
16191623 ) {
1620- runInTelemetryContext { telemetry ->
1621- telemetry.postUserFeedback(
1622- feedbackType,
1623- description,
1624- feedbackSource,
1625- screenshot,
1626- feedbackSubType,
1627- feedbackMetadata,
1628- userFeedbackCallback,
1629- )
1630- }
1624+ navigationTelemetry.postUserFeedback(
1625+ feedbackType,
1626+ description,
1627+ feedbackSource,
1628+ screenshot,
1629+ feedbackSubType,
1630+ feedbackMetadata,
1631+ userFeedbackCallback
1632+ )
16311633 }
16321634
16331635 @ExperimentalPreviewMapboxNavigationAPI
@@ -1636,30 +1638,21 @@ class MapboxNavigation @VisibleForTesting internal constructor(
16361638 @CustomEvent.Type customEventType : String ,
16371639 customEventVersion : String ,
16381640 ) {
1639- runInTelemetryContext { telemetry ->
1640- telemetry.postCustomEvent(
1641- payload = payload,
1642- customEventType = customEventType,
1643- customEventVersion = customEventVersion
1644- )
1645- }
1641+ navigationTelemetry.postCustomEvent(
1642+ customEventType,
1643+ customEventVersion,
1644+ payload,
1645+ )
16461646 }
16471647
16481648 /* *
1649- * Provides wrapper of [FeedbackMetadata]. [FeedbackMetadata] is used to send deferred
1649+ * Provides [FeedbackMetadata], that is used to send deferred
16501650 * feedback attached to passed location. It contains data (like location, time) when method is
16511651 * invoked.
1652- *
1653- * Note: method throws [IllegalStateException] if trips session is not
1654- * started ([startTripSession]) or telemetry is disabled.
16551652 */
16561653 @ExperimentalPreviewMapboxNavigationAPI
16571654 fun provideFeedbackMetadataWrapper (): FeedbackMetadataWrapper =
1658- runInTelemetryContext { telemetry ->
1659- telemetry.provideFeedbackMetadataWrapper()
1660- } ? : throw java.lang.IllegalStateException (
1661- " To get FeedbackMetadataWrapper Telemetry must be enabled"
1662- )
1655+ navigationTelemetry.provideFeedbackMetadataWrapper()
16631656
16641657 /* *
16651658 * Start observing alternatives routes for a trip session via [RouteAlternativesObserver].
@@ -1967,6 +1960,11 @@ class MapboxNavigation @VisibleForTesting internal constructor(
19671960 } else {
19681961 RouterInterfaceAdapter (moduleRouter, ::getNavigationRoutes)
19691962 },
1963+ NavigationComponentProvider .createEventsMetadataInterface(
1964+ navigationOptions.applicationContext,
1965+ ApplicationLifecycleMonitor (navigationOptions.applicationContext),
1966+ navigationOptions.eventsAppMetadata
1967+ ),
19701968 )
19711969 assignHistoryRecorders()
19721970
@@ -1994,12 +1992,8 @@ class MapboxNavigation @VisibleForTesting internal constructor(
19941992 }
19951993 }
19961994
1997- private inline fun <T > runInTelemetryContext (func : (MapboxNavigationTelemetry ) -> T ): T ? {
1998- return if (TelemetryUtilsDelegate .getEventsCollectionState()) {
1999- func(MapboxNavigationTelemetry )
2000- } else {
2001- null
2002- }
1995+ private fun cancelReroute () {
1996+ rerouteController?.interrupt()
20031997 }
20041998
20051999 private fun obtainUserAgent (): String {
0 commit comments