RemoteMediaClient tracksChooser android

This commit is contained in:
gianlucaparadise 2021-12-10 08:15:57 +01:00
parent e52b24861c
commit 9c8327b6ab
3 changed files with 24 additions and 3 deletions

View file

@ -49,4 +49,7 @@ dependencies {
// Lifecycle
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
// To open TracksChooserDialogFragment
implementation "androidx.activity:activity-ktx:1.3.1"
}

View file

@ -3,6 +3,7 @@ package com.gianlucaparadise.flutter_cast_framework
import android.app.Activity
import android.content.Context
import android.util.Log
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
@ -18,6 +19,7 @@ import com.google.android.gms.cast.framework.CastSession
import com.google.android.gms.cast.framework.SessionManager
import com.google.android.gms.cast.framework.SessionManagerListener
import com.google.android.gms.cast.framework.media.RemoteMediaClient
import com.google.android.gms.cast.framework.media.TracksChooserDialogFragment
import io.flutter.embedding.engine.plugins.FlutterPlugin
import io.flutter.embedding.engine.plugins.activity.ActivityAware
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding
@ -250,7 +252,7 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
override fun getMediaInfo(): PlatformBridgeApis.MediaInfo {
val remoteMediaClient: RemoteMediaClient = remoteMediaClient
?: throw IllegalStateException("Missing cast session")
?: throw IllegalStateException("Missing cast session")
val hostMediaInfo = remoteMediaClient.mediaInfo ?: return PlatformBridgeApis.MediaInfo()
@ -272,6 +274,22 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
remoteMediaClient.stop()
}
override fun showTracksChooserDialog() {
if (activity !is FragmentActivity) {
Log.e(TAG, "Error: no_fragment_activity, FlutterCastFramework requires activity to be a FragmentActivity.")
return
}
val activity = activity as? FragmentActivity
if (activity == null) {
Log.d(TAG, "showTracksChooserDialog - missing context")
return
}
TracksChooserDialogFragment.newInstance()
.show(activity.supportFragmentManager, "FlutterCastFrameworkTracksChooserDialog")
}
override fun setMute(muted: Boolean?) {
if (muted == null) return
val castSession = mCastSession ?: return

View file

@ -1,6 +1,6 @@
package com.gianlucaparadise.flutter_cast_framework_example
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.android.FlutterFragmentActivity
class MainActivity: FlutterActivity() {
class MainActivity: FlutterFragmentActivity() {
}