RemoteMediaClient implement in Android
This commit is contained in:
parent
02f04bc621
commit
7c393423c7
1 changed files with 58 additions and 2 deletions
|
|
@ -10,6 +10,7 @@ import androidx.lifecycle.ProcessLifecycleOwner
|
||||||
import com.gianlucaparadise.flutter_cast_framework.cast.CastDialogOpener
|
import com.gianlucaparadise.flutter_cast_framework.cast.CastDialogOpener
|
||||||
import com.gianlucaparadise.flutter_cast_framework.cast.MessageCastingChannel
|
import com.gianlucaparadise.flutter_cast_framework.cast.MessageCastingChannel
|
||||||
import com.gianlucaparadise.flutter_cast_framework.media.getMediaLoadRequestData
|
import com.gianlucaparadise.flutter_cast_framework.media.getMediaLoadRequestData
|
||||||
|
import com.google.android.gms.cast.MediaError
|
||||||
import com.google.android.gms.cast.framework.CastContext
|
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
|
||||||
|
|
@ -97,6 +98,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 var castApi : PlatformBridgeApis.CastHostApi? = null
|
private var castApi : PlatformBridgeApis.CastHostApi? = null
|
||||||
private var flutterApi: PlatformBridgeApis.CastFlutterApi? = null
|
private var flutterApi: PlatformBridgeApis.CastFlutterApi? = null
|
||||||
|
|
@ -113,9 +115,20 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
|
||||||
val oldSession = field
|
val oldSession = field
|
||||||
field = value
|
field = value
|
||||||
|
|
||||||
|
remoteMediaClient = value?.remoteMediaClient
|
||||||
flutterApi?.getSessionMessageNamespaces(getOnNamespaceResult(oldSession, newSession = value))
|
flutterApi?.getSessionMessageNamespaces(getOnNamespaceResult(oldSession, newSession = value))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var remoteMediaClient: RemoteMediaClient? = null
|
||||||
|
set(value) {
|
||||||
|
Log.d(TAG, "Updating remoteMediaClient - remoteMediaClient changed: ${field != value}")
|
||||||
|
|
||||||
|
field?.unregisterCallback(remoteMediaClientListener)
|
||||||
|
value?.registerCallback(remoteMediaClientListener)
|
||||||
|
|
||||||
|
field = value
|
||||||
|
}
|
||||||
|
|
||||||
//region LifecycleObserver
|
//region LifecycleObserver
|
||||||
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
|
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
|
||||||
fun onCreate() {
|
fun onCreate() {
|
||||||
|
|
@ -154,6 +167,50 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
|
||||||
result.notImplemented()
|
result.notImplemented()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private inner class RemoteMediaClientListener : RemoteMediaClient.Callback() {
|
||||||
|
override fun onStatusUpdated() {
|
||||||
|
Log.d(TAG, "RemoteMediaClient - onStatusUpdated")
|
||||||
|
super.onStatusUpdated()
|
||||||
|
flutterApi?.onStatusUpdated { }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onMetadataUpdated() {
|
||||||
|
Log.d(TAG, "RemoteMediaClient - onMetadataUpdated")
|
||||||
|
super.onMetadataUpdated()
|
||||||
|
flutterApi?.onMetadataUpdated { }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onQueueStatusUpdated() {
|
||||||
|
Log.d(TAG, "RemoteMediaClient - onQueueStatusUpdated")
|
||||||
|
super.onQueueStatusUpdated()
|
||||||
|
flutterApi?.onQueueStatusUpdated { }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPreloadStatusUpdated() {
|
||||||
|
Log.d(TAG, "RemoteMediaClient - onPreloadStatusUpdated")
|
||||||
|
super.onPreloadStatusUpdated()
|
||||||
|
flutterApi?.onPreloadStatusUpdated { }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSendingRemoteMediaRequest() {
|
||||||
|
Log.d(TAG, "RemoteMediaClient - onSendingRemoteMediaRequest")
|
||||||
|
super.onSendingRemoteMediaRequest()
|
||||||
|
flutterApi?.onSendingRemoteMediaRequest { }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onAdBreakStatusUpdated() {
|
||||||
|
Log.d(TAG, "RemoteMediaClient - onAdBreakStatusUpdated")
|
||||||
|
super.onAdBreakStatusUpdated()
|
||||||
|
flutterApi?.onAdBreakStatusUpdated { }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onMediaError(error: MediaError?) {
|
||||||
|
Log.d(TAG, "RemoteMediaClient - onMediaError $error")
|
||||||
|
super.onMediaError(error)
|
||||||
|
flutterApi?.onMediaError { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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)
|
||||||
|
|
@ -173,8 +230,7 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
|
||||||
override fun loadMediaLoadRequestData(request: PlatformBridgeApis.MediaLoadRequestData?) {
|
override fun loadMediaLoadRequestData(request: PlatformBridgeApis.MediaLoadRequestData?) {
|
||||||
if (request == null) return
|
if (request == null) return
|
||||||
|
|
||||||
val castSession: CastSession = mCastSession ?: return
|
val remoteMediaClient: RemoteMediaClient = remoteMediaClient ?: return
|
||||||
val remoteMediaClient : RemoteMediaClient = castSession.remoteMediaClient ?: return
|
|
||||||
|
|
||||||
val mediaLoadRequest = getMediaLoadRequestData(request)
|
val mediaLoadRequest = getMediaLoadRequestData(request)
|
||||||
remoteMediaClient.load(mediaLoadRequest)
|
remoteMediaClient.load(mediaLoadRequest)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue