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 // Lifecycle
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-common-java8:$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.app.Activity
import android.content.Context import android.content.Context
import android.util.Log import android.util.Log
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent 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.SessionManager
import com.google.android.gms.cast.framework.SessionManagerListener 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.RemoteMediaClient
import com.google.android.gms.cast.framework.media.TracksChooserDialogFragment
import io.flutter.embedding.engine.plugins.FlutterPlugin import io.flutter.embedding.engine.plugins.FlutterPlugin
import io.flutter.embedding.engine.plugins.activity.ActivityAware import io.flutter.embedding.engine.plugins.activity.ActivityAware
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding
@ -250,7 +252,7 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
override fun getMediaInfo(): PlatformBridgeApis.MediaInfo { override fun getMediaInfo(): PlatformBridgeApis.MediaInfo {
val remoteMediaClient: RemoteMediaClient = remoteMediaClient val remoteMediaClient: RemoteMediaClient = remoteMediaClient
?: throw IllegalStateException("Missing cast session") ?: throw IllegalStateException("Missing cast session")
val hostMediaInfo = remoteMediaClient.mediaInfo ?: return PlatformBridgeApis.MediaInfo() val hostMediaInfo = remoteMediaClient.mediaInfo ?: return PlatformBridgeApis.MediaInfo()
@ -272,6 +274,22 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
remoteMediaClient.stop() 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?) { override fun setMute(muted: Boolean?) {
if (muted == null) return if (muted == null) return
val castSession = mCastSession ?: return val castSession = mCastSession ?: return

View file

@ -1,6 +1,6 @@
package com.gianlucaparadise.flutter_cast_framework_example 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() {
} }