diff --git a/android/build.gradle b/android/build.gradle index a7b0614..b8d3637 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -40,7 +40,13 @@ android { } dependencies { + def lifecycle_version = "2.0.0" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "com.google.android.gms:play-services-cast-framework:17.1.0" + + // Lifecycle + implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" + implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" } diff --git a/android/src/main/kotlin/com/gianlucaparadise/flutter_cast_framework/FlutterCastFrameworkPlugin.kt b/android/src/main/kotlin/com/gianlucaparadise/flutter_cast_framework/FlutterCastFrameworkPlugin.kt index e0d86da..519d107 100644 --- a/android/src/main/kotlin/com/gianlucaparadise/flutter_cast_framework/FlutterCastFrameworkPlugin.kt +++ b/android/src/main/kotlin/com/gianlucaparadise/flutter_cast_framework/FlutterCastFrameworkPlugin.kt @@ -1,6 +1,10 @@ package com.gianlucaparadise.flutter_cast_framework import android.util.Log +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleObserver +import androidx.lifecycle.OnLifecycleEvent +import androidx.lifecycle.ProcessLifecycleOwner import androidx.mediarouter.app.MediaRouteChooserDialog import androidx.mediarouter.app.MediaRouteControllerDialog import com.google.android.gms.cast.framework.CastContext @@ -10,14 +14,10 @@ import io.flutter.plugin.common.MethodChannel.MethodCallHandler import io.flutter.plugin.common.MethodChannel.Result import io.flutter.plugin.common.PluginRegistry.Registrar -class FlutterCastFrameworkPlugin(private val registrar: Registrar, private val channel: MethodChannel) : MethodCallHandler { +class FlutterCastFrameworkPlugin(private val registrar: Registrar, private val channel: MethodChannel) : MethodCallHandler, LifecycleObserver { companion object { const val TAG = "AndroidCastPlugin" - // @StyleRes - // var customStyleResId: Int? = null - // private val themeResId get() = customStyleResId ?: R.style.Theme_AppCompat_DayNight_Dialog_Alert - @JvmStatic fun registerWith(registrar: Registrar) { val channel = MethodChannel(registrar.messenger(), "flutter_cast_framework") @@ -26,12 +26,19 @@ class FlutterCastFrameworkPlugin(private val registrar: Registrar, private val c } init { + ProcessLifecycleOwner.get().lifecycle.addObserver(this) + CastContext.getSharedInstance(registrar.activeContext()).addCastStateListener { i -> Log.d(TAG, "Cast state changed: $i") channel.invokeMethod("onCastStateChanged", i) } } + @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) + fun onResume() { + Log.d(TAG, "App: ON_RESUME") + } + override fun onMethodCall(call: MethodCall, result: Result) { when (call.method) { "showCastDialog" -> showCastDialog()