From 65ed8a14a7b5a79a66a485625a668a5aa2be5607 Mon Sep 17 00:00:00 2001 From: gianlucaparadise Date: Mon, 11 Jul 2022 08:25:37 +0200 Subject: [PATCH] MediaQueue methods: android --- .../FlutterCastFrameworkPlugin.kt | 16 ++++++++++++---- .../media/FlutterMediaLoadRequestDataHelper.kt | 13 +++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) 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 b186472..af1325b 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 @@ -10,10 +10,7 @@ import androidx.lifecycle.OnLifecycleEvent import androidx.lifecycle.ProcessLifecycleOwner import com.gianlucaparadise.flutter_cast_framework.cast.CastDialogOpener import com.gianlucaparadise.flutter_cast_framework.cast.MessageCastingChannel -import com.gianlucaparadise.flutter_cast_framework.media.getFlutterMediaInfo -import com.gianlucaparadise.flutter_cast_framework.media.getFlutterMediaStatus -import com.gianlucaparadise.flutter_cast_framework.media.getMediaLoadRequestData -import com.gianlucaparadise.flutter_cast_framework.media.getMediaQueueItem +import com.gianlucaparadise.flutter_cast_framework.media.* import com.google.android.gms.cast.MediaError import com.google.android.gms.cast.MediaStatus.* import com.google.android.gms.cast.framework.CastContext @@ -414,6 +411,17 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa remoteMediaClient.queuePrev(null) } + override fun getQueueItemCount(): Long { + return mediaQueue?.itemCount?.toLong() ?: -1 + } + + override fun getQueueItemAtIndex(index: Long?): PlatformBridgeApis.MediaQueueItem { + if (index == null || index < 0) return getFlutterMediaQueueItem(null) + + val mediaQueueItem = mediaQueue?.getItemAtIndex(index.toInt(), true) + return getFlutterMediaQueueItem(mediaQueueItem) + } + override fun setMute(muted: Boolean?) { if (muted == null) return val castSession = mCastSession ?: return diff --git a/android/src/main/kotlin/com/gianlucaparadise/flutter_cast_framework/media/FlutterMediaLoadRequestDataHelper.kt b/android/src/main/kotlin/com/gianlucaparadise/flutter_cast_framework/media/FlutterMediaLoadRequestDataHelper.kt index 4f517d8..b44a656 100644 --- a/android/src/main/kotlin/com/gianlucaparadise/flutter_cast_framework/media/FlutterMediaLoadRequestDataHelper.kt +++ b/android/src/main/kotlin/com/gianlucaparadise/flutter_cast_framework/media/FlutterMediaLoadRequestDataHelper.kt @@ -158,3 +158,16 @@ fun getFlutterMediaType(mediaType: Int?): PlatformBridgeApis.MediaType { else -> PlatformBridgeApis.MediaType.generic } } + +fun getFlutterMediaQueueItem(item: MediaQueueItem?): PlatformBridgeApis.MediaQueueItem { + val mediaInto = getFlutterMediaInfo(item?.media) + + return PlatformBridgeApis.MediaQueueItem().apply { + itemId = item?.itemId?.toLong() ?: -1 + autoplay = item?.autoplay ?: false + playbackDuration = item?.playbackDuration ?: -1.0 + startTime = item?.startTime ?: 0.0 + preloadTime = item?.preloadTime ?: 0.0 + media = mediaInto + } +} \ No newline at end of file