Skip to content

Commit 2af056a

Browse files
committed
feat: add foreground service example for android
1 parent 25a6731 commit 2af056a

24 files changed

+1510
-216
lines changed

android/src/main/kotlin/com/google/maps/flutter/navigation/AndroidAutoBaseScreen.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ open class AndroidAutoBaseScreen(carContext: CarContext) :
5555

5656
private fun initializeNavigationListener() {
5757
GoogleMapsNavigationSessionManager.navigationReadyListener = this
58-
mIsNavigationReady = GoogleMapsNavigatorHolder.getInitializationState() == GoogleNavigatorInitializationState.INITIALIZED
58+
mIsNavigationReady =
59+
GoogleMapsNavigatorHolder.getInitializationState() ==
60+
GoogleNavigatorInitializationState.INITIALIZED
5961
}
6062

6163
private fun initializeSurfaceCallback() {

android/src/main/kotlin/com/google/maps/flutter/navigation/GoogleMapsNavigationInspectorHandler.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414

1515
package com.google.maps.flutter.navigation
1616

17-
class GoogleMapsNavigationInspectorHandler(
18-
private val viewRegistry: GoogleMapsViewRegistry
19-
) : NavigationInspector {
17+
class GoogleMapsNavigationInspectorHandler(private val viewRegistry: GoogleMapsViewRegistry) :
18+
NavigationInspector {
2019
override fun isViewAttachedToSession(viewId: Long): Boolean {
2120
/// Is session exists, it's automatically attached to any existing view.
2221
if (viewRegistry.getNavigationView(viewId.toInt()) != null) {
23-
return GoogleMapsNavigatorHolder.getInitializationState() == GoogleNavigatorInitializationState.INITIALIZED
22+
return GoogleMapsNavigatorHolder.getInitializationState() ==
23+
GoogleNavigatorInitializationState.INITIALIZED
2424
}
2525
return false
2626
}

android/src/main/kotlin/com/google/maps/flutter/navigation/GoogleMapsNavigationPlugin.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.google.maps.flutter.navigation
1818

19+
import android.app.Application
1920
import androidx.lifecycle.Lifecycle
2021
import io.flutter.embedding.engine.plugins.FlutterPlugin
2122
import io.flutter.embedding.engine.plugins.activity.ActivityAware
@@ -40,14 +41,15 @@ class GoogleMapsNavigationPlugin : FlutterPlugin, ActivityAware {
4041
private var viewMessageHandler: GoogleMapsViewMessageHandler? = null
4142
private var imageRegistryMessageHandler: GoogleMapsImageRegistryMessageHandler? = null
4243
private var autoViewMessageHandler: GoogleMapsAutoViewMessageHandler? = null
43-
44+
4445
// Instance-level session manager instead of singleton
4546
internal var sessionManager: GoogleMapsNavigationSessionManager? = null
4647

4748
private var lifecycle: Lifecycle? = null
4849

4950
override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) {
50-
// Store first instance of the plugin so that Android Auto will get access to the correct object instances.
51+
// Store first instance of the plugin so that Android Auto will get access to the correct object
52+
// instances.
5153
if (instance == null) {
5254
instance = this
5355
}
@@ -68,19 +70,20 @@ class GoogleMapsNavigationPlugin : FlutterPlugin, ActivityAware {
6870
AutoMapViewApi.setUp(binding.binaryMessenger, autoViewMessageHandler)
6971
autoViewEventApi = AutoViewEventApi(binding.binaryMessenger)
7072

71-
// Setup navigation session manager (instance-level, not singleton)
73+
// Setup navigation session manager
74+
val app = binding.applicationContext as Application
7275
val navigationSessionEventApi = NavigationSessionEventApi(binding.binaryMessenger)
73-
sessionManager = GoogleMapsNavigationSessionManager(navigationSessionEventApi)
76+
sessionManager = GoogleMapsNavigationSessionManager(navigationSessionEventApi, app)
7477

7578
// Setup platform view factory and its method channel handlers
7679
viewEventApi = ViewEventApi(binding.binaryMessenger)
7780
val factory = GoogleMapsViewFactory(viewRegistry!!, viewEventApi!!, imageRegistry!!)
7881
binding.platformViewRegistry.registerViewFactory("google_navigation_flutter", factory)
79-
82+
8083
// Setup navigation session message handler with this instance's session manager
8184
val sessionMessageHandler = GoogleMapsNavigationSessionMessageHandler(sessionManager!!)
8285
NavigationSessionApi.setUp(binding.binaryMessenger, sessionMessageHandler)
83-
86+
8487
val inspectorHandler = GoogleMapsNavigationInspectorHandler(viewRegistry!!)
8588
NavigationInspector.setUp(binding.binaryMessenger, inspectorHandler)
8689
}

0 commit comments

Comments
 (0)