RemoteMediaClient playerState android, ios, flutter
This commit is contained in:
parent
d669c9e9ce
commit
447bdd576d
5 changed files with 61 additions and 40 deletions
|
|
@ -12,6 +12,7 @@ import com.gianlucaparadise.flutter_cast_framework.cast.MessageCastingChannel
|
||||||
import com.gianlucaparadise.flutter_cast_framework.media.getFlutterMediaInfo
|
import com.gianlucaparadise.flutter_cast_framework.media.getFlutterMediaInfo
|
||||||
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.MediaError
|
||||||
|
import com.google.android.gms.cast.MediaStatus.PLAYER_STATE_UNKNOWN
|
||||||
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
|
||||||
|
|
@ -177,7 +178,8 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
|
||||||
override fun onStatusUpdated() {
|
override fun onStatusUpdated() {
|
||||||
Log.d(TAG, "RemoteMediaClient - onStatusUpdated")
|
Log.d(TAG, "RemoteMediaClient - onStatusUpdated")
|
||||||
super.onStatusUpdated()
|
super.onStatusUpdated()
|
||||||
flutterApi?.onStatusUpdated { }
|
val playerStateRaw = remoteMediaClient?.playerState ?: PLAYER_STATE_UNKNOWN
|
||||||
|
flutterApi?.onStatusUpdated(playerStateRaw.toLong()) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onMetadataUpdated() {
|
override fun onMetadataUpdated() {
|
||||||
|
|
|
||||||
|
|
@ -68,8 +68,8 @@ class _MyAppState extends State<MyApp> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onRemoteMediaClientStatusUpdated() {
|
void _onRemoteMediaClientStatusUpdated(PlayerState playerState) {
|
||||||
debugPrint("RemoteMediaClient status updated");
|
debugPrint("RemoteMediaClient status updated - playerState $playerState");
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onSendMessage() {
|
void _onSendMessage() {
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
||||||
var castSession: GCKCastSession? {
|
var castSession: GCKCastSession? {
|
||||||
get { return _castSession }
|
get { return _castSession }
|
||||||
set {
|
set {
|
||||||
print("Updating castSession - castSession changed: \(_castSession != newValue)")
|
debugPrint("Updating castSession - castSession changed: \(_castSession != newValue)")
|
||||||
|
|
||||||
let oldSession = _castSession
|
let oldSession = _castSession
|
||||||
let newSession = newValue
|
let newSession = newValue
|
||||||
|
|
@ -39,7 +39,7 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
||||||
remoteMediaClient = newValue?.remoteMediaClient
|
remoteMediaClient = newValue?.remoteMediaClient
|
||||||
|
|
||||||
flutterApi.getSessionMessageNamespaces { (namespaces, err) in
|
flutterApi.getSessionMessageNamespaces { (namespaces, err) in
|
||||||
print("Updating castSession - getSessionMessageNamespaces success - param: \(namespaces.joined(separator: ", "))")
|
debugPrint("Updating castSession - getSessionMessageNamespaces success - param: \(namespaces.joined(separator: ", "))")
|
||||||
if (oldSession == nil && newSession == nil) {
|
if (oldSession == nil && newSession == nil) {
|
||||||
return // nothing to do here
|
return // nothing to do here
|
||||||
}
|
}
|
||||||
|
|
@ -68,7 +68,7 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
||||||
var remoteMediaClient: GCKRemoteMediaClient? {
|
var remoteMediaClient: GCKRemoteMediaClient? {
|
||||||
get { return _remoteMediaClient }
|
get { return _remoteMediaClient }
|
||||||
set {
|
set {
|
||||||
print("Updating remoteMediaClient - remoteMediaClient changed: \(_remoteMediaClient != newValue)")
|
debugPrint("Updating remoteMediaClient - remoteMediaClient changed: \(_remoteMediaClient != newValue)")
|
||||||
|
|
||||||
_remoteMediaClient?.remove(self)
|
_remoteMediaClient?.remove(self)
|
||||||
newValue?.add(self)
|
newValue?.add(self)
|
||||||
|
|
@ -98,7 +98,7 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc func appDidBecomeActive() {
|
@objc func appDidBecomeActive() {
|
||||||
print("AppLife: appDidBecomeActive - App moved to foreground!")
|
debugPrint("AppLife: appDidBecomeActive - App moved to foreground!")
|
||||||
self.sessionManager.add(self)
|
self.sessionManager.add(self)
|
||||||
self.castSession = self.sessionManager.currentCastSession
|
self.castSession = self.sessionManager.currentCastSession
|
||||||
|
|
||||||
|
|
@ -106,14 +106,14 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc func appWillResignActive() {
|
@objc func appWillResignActive() {
|
||||||
print("AppLife: appWillResignActive - App moved to background!")
|
debugPrint("AppLife: appWillResignActive - App moved to background!")
|
||||||
self.sessionManager.remove(self)
|
self.sessionManager.remove(self)
|
||||||
self.castSession = nil
|
self.castSession = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
private func onCastStateChanged(state: GCKCastContext, change: NSKeyValueObservedChange<GCKCastState>) {
|
private func onCastStateChanged(state: GCKCastContext, change: NSKeyValueObservedChange<GCKCastState>) {
|
||||||
let castState = GCKCastContext.sharedInstance().castState
|
let castState = GCKCastContext.sharedInstance().castState
|
||||||
print("cast state change to: \(castState.rawValue)")
|
debugPrint("cast state change to: \(castState.rawValue)")
|
||||||
notifyCastState(castState: castState)
|
notifyCastState(castState: castState)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -219,14 +219,14 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
||||||
|
|
||||||
// onSessionSuspended
|
// onSessionSuspended
|
||||||
public func sessionManager(_ sessionManager: GCKSessionManager, didSuspend session: GCKCastSession, with reason: GCKConnectionSuspendReason) {
|
public func sessionManager(_ sessionManager: GCKSessionManager, didSuspend session: GCKCastSession, with reason: GCKConnectionSuspendReason) {
|
||||||
print("SessionListener: didSuspend")
|
debugPrint("SessionListener: didSuspend")
|
||||||
flutterApi.onSessionSuspended { (_:Error?) in
|
flutterApi.onSessionSuspended { (_:Error?) in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// onSessionStarting
|
// onSessionStarting
|
||||||
public func sessionManager(_ sessionManager: GCKSessionManager, willStart session: GCKCastSession) {
|
public func sessionManager(_ sessionManager: GCKSessionManager, willStart session: GCKCastSession) {
|
||||||
print("SessionListener: willStart")
|
debugPrint("SessionListener: willStart")
|
||||||
flutterApi.onSessionStarting { (_:Error?) in
|
flutterApi.onSessionStarting { (_:Error?) in
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -235,7 +235,7 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
||||||
|
|
||||||
// onSessionResuming
|
// onSessionResuming
|
||||||
public func sessionManager(_ sessionManager: GCKSessionManager, willResumeCastSession session: GCKCastSession) {
|
public func sessionManager(_ sessionManager: GCKSessionManager, willResumeCastSession session: GCKCastSession) {
|
||||||
print("SessionListener: willResumeCastSession")
|
debugPrint("SessionListener: willResumeCastSession")
|
||||||
flutterApi.onSessionResuming { (_:Error?) in
|
flutterApi.onSessionResuming { (_:Error?) in
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -244,7 +244,7 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
||||||
|
|
||||||
// onSessionEnding
|
// onSessionEnding
|
||||||
public func sessionManager(_ sessionManager: GCKSessionManager, willEnd session: GCKCastSession) {
|
public func sessionManager(_ sessionManager: GCKSessionManager, willEnd session: GCKCastSession) {
|
||||||
print("SessionListener: willEnd")
|
debugPrint("SessionListener: willEnd")
|
||||||
stopProgressTImer()
|
stopProgressTImer()
|
||||||
flutterApi.onSessionEnding { (_:Error?) in
|
flutterApi.onSessionEnding { (_:Error?) in
|
||||||
}
|
}
|
||||||
|
|
@ -252,7 +252,7 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
||||||
|
|
||||||
// onSessionStartFailed
|
// onSessionStartFailed
|
||||||
public func sessionManager(_ sessionManager: GCKSessionManager, didFailToStart session: GCKCastSession, withError error: Error) {
|
public func sessionManager(_ sessionManager: GCKSessionManager, didFailToStart session: GCKCastSession, withError error: Error) {
|
||||||
print("SessionListener: didFailToStart")
|
debugPrint("SessionListener: didFailToStart")
|
||||||
flutterApi.onSessionStartFailed { (_:Error?) in
|
flutterApi.onSessionStartFailed { (_:Error?) in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -261,7 +261,7 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
||||||
|
|
||||||
// onSessionStarted
|
// onSessionStarted
|
||||||
public func sessionManager(_ sessionManager: GCKSessionManager, didStart session: GCKCastSession) {
|
public func sessionManager(_ sessionManager: GCKSessionManager, didStart session: GCKCastSession) {
|
||||||
print("SessionListener: didStart")
|
debugPrint("SessionListener: didStart")
|
||||||
flutterApi.onSessionStarted { (_:Error?) in
|
flutterApi.onSessionStarted { (_:Error?) in
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -270,7 +270,7 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
||||||
|
|
||||||
// onSessionResumed
|
// onSessionResumed
|
||||||
public func sessionManager(_ sessionManager: GCKSessionManager, didResumeCastSession session: GCKCastSession) {
|
public func sessionManager(_ sessionManager: GCKSessionManager, didResumeCastSession session: GCKCastSession) {
|
||||||
print("SessionListener: didResumeCastSession")
|
debugPrint("SessionListener: didResumeCastSession")
|
||||||
flutterApi.onSessionResumed { (_:Error?) in
|
flutterApi.onSessionResumed { (_:Error?) in
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -279,52 +279,53 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
||||||
|
|
||||||
// onSessionEnded
|
// onSessionEnded
|
||||||
public func sessionManager(_ sessionManager: GCKSessionManager, didEnd session: GCKCastSession, withError error: Error?) {
|
public func sessionManager(_ sessionManager: GCKSessionManager, didEnd session: GCKCastSession, withError error: Error?) {
|
||||||
print("SessionListener: didEnd")
|
debugPrint("SessionListener: didEnd")
|
||||||
flutterApi.onSessionEnded { (_:Error?) in
|
flutterApi.onSessionEnded { (_:Error?) in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// onQueueStatusUpdated
|
// onQueueStatusUpdated
|
||||||
public func remoteMediaClientDidUpdateQueue(_ client: GCKRemoteMediaClient) {
|
public func remoteMediaClientDidUpdateQueue(_ client: GCKRemoteMediaClient) {
|
||||||
print("RemoteMediaClientListener: didUpdateQueue")
|
debugPrint("RemoteMediaClientListener: didUpdateQueue")
|
||||||
flutterApi.onQueueStatusUpdated { (_:Error?) in
|
flutterApi.onQueueStatusUpdated { (_:Error?) in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// onPreloadStatusUpdated
|
// onPreloadStatusUpdated
|
||||||
public func remoteMediaClientDidUpdatePreloadStatus(_ client: GCKRemoteMediaClient) {
|
public func remoteMediaClientDidUpdatePreloadStatus(_ client: GCKRemoteMediaClient) {
|
||||||
print("RemoteMediaClientListener: didUpdatePreloadStatus")
|
debugPrint("RemoteMediaClientListener: didUpdatePreloadStatus")
|
||||||
flutterApi.onPreloadStatusUpdated { (_:Error?) in
|
flutterApi.onPreloadStatusUpdated { (_:Error?) in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// onStatusUpdated
|
// onStatusUpdated
|
||||||
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didUpdate mediaStatus: GCKMediaStatus?) {
|
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didUpdate mediaStatus: GCKMediaStatus?) {
|
||||||
var playerState = ""
|
var playerStateLabel = ""
|
||||||
|
|
||||||
switch mediaStatus?.playerState {
|
switch mediaStatus?.playerState {
|
||||||
case .unknown:
|
case .unknown:
|
||||||
playerState = "PlayerStateUnknown"
|
playerStateLabel = "PlayerStateUnknown"
|
||||||
case .idle:
|
case .idle:
|
||||||
playerState = "PlayerStateIdle"
|
playerStateLabel = "PlayerStateIdle"
|
||||||
case .playing:
|
case .playing:
|
||||||
playerState = "PlayerStatePlaying"
|
playerStateLabel = "PlayerStatePlaying"
|
||||||
startProgressTimer()
|
startProgressTimer()
|
||||||
case .paused:
|
case .paused:
|
||||||
playerState = "PlayerStatePaused"
|
playerStateLabel = "PlayerStatePaused"
|
||||||
startProgressTimer()
|
startProgressTimer()
|
||||||
case .buffering:
|
case .buffering:
|
||||||
playerState = "PlayerStateBuffering"
|
playerStateLabel = "PlayerStateBuffering"
|
||||||
startProgressTimer()
|
startProgressTimer()
|
||||||
case .loading:
|
case .loading:
|
||||||
playerState = "PlayerStateLoading"
|
playerStateLabel = "PlayerStateLoading"
|
||||||
startProgressTimer()
|
startProgressTimer()
|
||||||
default: break
|
default: break
|
||||||
}
|
}
|
||||||
|
|
||||||
debugPrint("RemoteMediaClientListener: didUpdate mediaStatus - playerState: \(playerState)")
|
debugPrint("RemoteMediaClientListener: didUpdate mediaStatus - playerState: \(playerStateLabel)")
|
||||||
|
let playerState = mediaStatus?.playerState ?? GCKMediaPlayerState.unknown
|
||||||
flutterApi.onStatusUpdated { (_:Error?) in
|
let nsPlayerState = NSNumber(value: playerState.rawValue)
|
||||||
|
flutterApi.onStatusUpdatedPlayerStateRaw(nsPlayerState) { (_:Error?) in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -333,49 +334,49 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
||||||
|
|
||||||
// onMetadataUpdated
|
// onMetadataUpdated
|
||||||
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didUpdate mediaMetadata: GCKMediaMetadata?) {
|
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didUpdate mediaMetadata: GCKMediaMetadata?) {
|
||||||
print("RemoteMediaClientListener: didUpdate mediaMetadata")
|
debugPrint("RemoteMediaClientListener: didUpdate mediaMetadata")
|
||||||
flutterApi.onMetadataUpdated { (_:Error?) in
|
flutterApi.onMetadataUpdated { (_:Error?) in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// onQueueStatusUpdated
|
// onQueueStatusUpdated
|
||||||
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didReceive queueItems: [GCKMediaQueueItem]) {
|
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didReceive queueItems: [GCKMediaQueueItem]) {
|
||||||
print("RemoteMediaClientListener: didReceive queueItems")
|
debugPrint("RemoteMediaClientListener: didReceive queueItems")
|
||||||
flutterApi.onQueueStatusUpdated { (_:Error?) in
|
flutterApi.onQueueStatusUpdated { (_:Error?) in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// onSendingRemoteMediaRequest
|
// onSendingRemoteMediaRequest
|
||||||
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didStartMediaSessionWithID sessionID: Int) {
|
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didStartMediaSessionWithID sessionID: Int) {
|
||||||
print("RemoteMediaClientListener: didStartMediaSessionWithID")
|
debugPrint("RemoteMediaClientListener: didStartMediaSessionWithID")
|
||||||
flutterApi.onSendingRemoteMediaRequest { (_:Error?) in
|
flutterApi.onSendingRemoteMediaRequest { (_:Error?) in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// onQueueStatusUpdated
|
// onQueueStatusUpdated
|
||||||
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didReceiveQueueItemIDs queueItemIDs: [NSNumber]) {
|
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didReceiveQueueItemIDs queueItemIDs: [NSNumber]) {
|
||||||
print("RemoteMediaClientListener: didReceiveQueueItemIDs")
|
debugPrint("RemoteMediaClientListener: didReceiveQueueItemIDs")
|
||||||
flutterApi.onQueueStatusUpdated { (_:Error?) in
|
flutterApi.onQueueStatusUpdated { (_:Error?) in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// onQueueStatusUpdated
|
// onQueueStatusUpdated
|
||||||
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didUpdateQueueItemsWithIDs queueItemIDs: [NSNumber]) {
|
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didUpdateQueueItemsWithIDs queueItemIDs: [NSNumber]) {
|
||||||
print("RemoteMediaClientListener: didUpdateQueueItemsWithIDs")
|
debugPrint("RemoteMediaClientListener: didUpdateQueueItemsWithIDs")
|
||||||
flutterApi.onQueueStatusUpdated { (_:Error?) in
|
flutterApi.onQueueStatusUpdated { (_:Error?) in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// onQueueStatusUpdated
|
// onQueueStatusUpdated
|
||||||
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didRemoveQueueItemsWithIDs queueItemIDs: [NSNumber]) {
|
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didRemoveQueueItemsWithIDs queueItemIDs: [NSNumber]) {
|
||||||
print("RemoteMediaClientListener: didRemoveQueueItemsWithIDs")
|
debugPrint("RemoteMediaClientListener: didRemoveQueueItemsWithIDs")
|
||||||
flutterApi.onQueueStatusUpdated { (_:Error?) in
|
flutterApi.onQueueStatusUpdated { (_:Error?) in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// onQueueStatusUpdated
|
// onQueueStatusUpdated
|
||||||
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didInsertQueueItemsWithIDs queueItemIDs: [NSNumber], beforeItemWithID beforeItemID: UInt) {
|
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didInsertQueueItemsWithIDs queueItemIDs: [NSNumber], beforeItemWithID beforeItemID: UInt) {
|
||||||
print("RemoteMediaClientListener: didInsertQueueItemsWithIDs")
|
debugPrint("RemoteMediaClientListener: didInsertQueueItemsWithIDs")
|
||||||
flutterApi.onQueueStatusUpdated { (_:Error?) in
|
flutterApi.onQueueStatusUpdated { (_:Error?) in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@ class SessionManager {
|
||||||
|
|
||||||
SessionManager(this._hostApi);
|
SessionManager(this._hostApi);
|
||||||
|
|
||||||
final ValueNotifier<SessionState> state = ValueNotifier(SessionState.idle);
|
final state = ValueNotifier(SessionState.idle);
|
||||||
|
final playerState = ValueNotifier(PlayerState.unknown);
|
||||||
|
|
||||||
void onSessionStateChanged(SessionState sessionState) {
|
void onSessionStateChanged(SessionState sessionState) {
|
||||||
switch (sessionState) {
|
switch (sessionState) {
|
||||||
|
|
@ -28,9 +29,14 @@ class SessionManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dispatchOnPlayerStateUpdated(PlayerState playerState) {
|
||||||
|
this.playerState.value = playerState;
|
||||||
|
onStatusUpdated?.call(playerState);
|
||||||
|
}
|
||||||
|
|
||||||
MessageReceivedCallback? onMessageReceived;
|
MessageReceivedCallback? onMessageReceived;
|
||||||
|
|
||||||
VoidCallback? onStatusUpdated;
|
StatusUpdatedCallback? onStatusUpdated;
|
||||||
VoidCallback? onMetadataUpdated;
|
VoidCallback? onMetadataUpdated;
|
||||||
VoidCallback? onQueueStatusUpdated;
|
VoidCallback? onQueueStatusUpdated;
|
||||||
VoidCallback? onPreloadStatusUpdated;
|
VoidCallback? onPreloadStatusUpdated;
|
||||||
|
|
@ -80,3 +86,14 @@ enum SessionState {
|
||||||
session_resume_failed,
|
session_resume_failed,
|
||||||
session_suspended,
|
session_suspended,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef StatusUpdatedCallback = void Function(PlayerState);
|
||||||
|
|
||||||
|
enum PlayerState {
|
||||||
|
unknown, // 0
|
||||||
|
idle, // 1
|
||||||
|
playing, // 2
|
||||||
|
paused, // 3
|
||||||
|
buffering, // 4
|
||||||
|
loading, // 5
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -122,8 +122,9 @@ class FlutterCastFramework extends CastFlutterApi {
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onStatusUpdated() {
|
void onStatusUpdated(int playerStateRaw) {
|
||||||
castContext.sessionManager.onStatusUpdated?.call();
|
final playerState = PlayerState.values[playerStateRaw];
|
||||||
|
castContext.sessionManager.dispatchOnPlayerStateUpdated(playerState);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue