MediaQueue callbacks android
This commit is contained in:
parent
6224955962
commit
638a2034b7
1 changed files with 54 additions and 0 deletions
|
|
@ -20,6 +20,7 @@ import com.google.android.gms.cast.framework.CastContext
|
||||||
import com.google.android.gms.cast.framework.CastSession
|
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.MediaQueue
|
||||||
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 com.google.android.gms.cast.framework.media.TracksChooserDialogFragment
|
||||||
import io.flutter.embedding.engine.plugins.FlutterPlugin
|
import io.flutter.embedding.engine.plugins.FlutterPlugin
|
||||||
|
|
@ -105,6 +106,7 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
|
||||||
private lateinit var mSessionManager: SessionManager
|
private lateinit var mSessionManager: SessionManager
|
||||||
private val mSessionManagerListener = CastSessionManagerListener()
|
private val mSessionManagerListener = CastSessionManagerListener()
|
||||||
private val remoteMediaClientListener = RemoteMediaClientListener()
|
private val remoteMediaClientListener = RemoteMediaClientListener()
|
||||||
|
private val mediaQueueListener = MediaQueueListener()
|
||||||
|
|
||||||
private var castApi: PlatformBridgeApis.CastHostApi? = null
|
private var castApi: PlatformBridgeApis.CastHostApi? = null
|
||||||
private var flutterApi: PlatformBridgeApis.CastFlutterApi? = null
|
private var flutterApi: PlatformBridgeApis.CastFlutterApi? = null
|
||||||
|
|
@ -138,6 +140,18 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
|
||||||
value?.addProgressListener(remoteMediaClientListener, periodMs)
|
value?.addProgressListener(remoteMediaClientListener, periodMs)
|
||||||
|
|
||||||
field = value
|
field = value
|
||||||
|
|
||||||
|
mediaQueue = value?.mediaQueue
|
||||||
|
}
|
||||||
|
|
||||||
|
private var mediaQueue: MediaQueue? = null
|
||||||
|
set(value) {
|
||||||
|
Log.d(TAG, "Updating mediaQueue - mediaQueue changed: ${field != value}")
|
||||||
|
|
||||||
|
field?.unregisterCallback(mediaQueueListener)
|
||||||
|
value?.registerCallback(mediaQueueListener)
|
||||||
|
|
||||||
|
field = value
|
||||||
}
|
}
|
||||||
|
|
||||||
//region LifecycleObserver
|
//region LifecycleObserver
|
||||||
|
|
@ -273,6 +287,46 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private inner class MediaQueueListener : MediaQueue.Callback() {
|
||||||
|
override fun mediaQueueWillChange() {
|
||||||
|
Log.d(TAG, "MediaQueue - mediaQueueWillChange")
|
||||||
|
super.mediaQueueWillChange()
|
||||||
|
flutterApi?.mediaQueueWillChange { }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun mediaQueueChanged() {
|
||||||
|
Log.d(TAG, "MediaQueue - mediaQueueChanged")
|
||||||
|
super.mediaQueueChanged()
|
||||||
|
flutterApi?.mediaQueueChanged { }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun itemsReloaded() {
|
||||||
|
Log.d(TAG, "MediaQueue - itemsReloaded")
|
||||||
|
super.itemsReloaded()
|
||||||
|
flutterApi?.itemsReloaded { }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun itemsInsertedInRange(insertIndex: Int, insertCount: Int) {
|
||||||
|
Log.d(TAG, "MediaQueue - itemsInsertedInRange")
|
||||||
|
super.itemsInsertedInRange(insertIndex, insertCount)
|
||||||
|
flutterApi?.itemsInsertedInRange(insertIndex.toLong(), insertCount.toLong()) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun itemsUpdatedAtIndexes(indexes: IntArray?) {
|
||||||
|
Log.d(TAG, "MediaQueue - itemsUpdatedAtIndexes")
|
||||||
|
super.itemsUpdatedAtIndexes(indexes)
|
||||||
|
val longIndexes = indexes?.map { it.toLong() }
|
||||||
|
flutterApi?.itemsUpdatedAtIndexes(longIndexes) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun itemsRemovedAtIndexes(indexes: IntArray?) {
|
||||||
|
Log.d(TAG, "MediaQueue itemsRemovedAtIndexeseWillChange")
|
||||||
|
super.itemsRemovedAtIndexes(indexes)
|
||||||
|
val longIndexes = indexes?.map { it.toLong() }
|
||||||
|
flutterApi?.itemsRemovedAtIndexes(longIndexes) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private inner class MyApi : PlatformBridgeApis.CastHostApi {
|
private inner class MyApi : PlatformBridgeApis.CastHostApi {
|
||||||
override fun sendMessage(message: PlatformBridgeApis.CastMessage?) {
|
override fun sendMessage(message: PlatformBridgeApis.CastMessage?) {
|
||||||
mMessageCastingChannel?.sendMessage(mCastSession, message)
|
mMessageCastingChannel?.sendMessage(mCastSession, message)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue