AdBreakProgress android
This commit is contained in:
parent
d066611846
commit
3ae88ceb8a
1 changed files with 44 additions and 6 deletions
|
|
@ -13,7 +13,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.MediaStatus.*
|
||||||
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
|
||||||
|
|
@ -73,7 +73,7 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
|
||||||
|
|
||||||
override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
|
override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
|
||||||
Log.d(TAG, "onDetachedFromEngine")
|
Log.d(TAG, "onDetachedFromEngine")
|
||||||
applicationContext = null;
|
applicationContext = null
|
||||||
mMessageCastingChannel = null
|
mMessageCastingChannel = null
|
||||||
}
|
}
|
||||||
//endregion
|
//endregion
|
||||||
|
|
@ -178,9 +178,18 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
|
||||||
|
|
||||||
private inner class RemoteMediaClientListener : RemoteMediaClient.Callback(), RemoteMediaClient.ProgressListener {
|
private inner class RemoteMediaClientListener : RemoteMediaClient.Callback(), RemoteMediaClient.ProgressListener {
|
||||||
override fun onStatusUpdated() {
|
override fun onStatusUpdated() {
|
||||||
Log.d(TAG, "RemoteMediaClient - onStatusUpdated")
|
|
||||||
super.onStatusUpdated()
|
|
||||||
val playerStateRaw = remoteMediaClient?.playerState ?: PLAYER_STATE_UNKNOWN
|
val playerStateRaw = remoteMediaClient?.playerState ?: PLAYER_STATE_UNKNOWN
|
||||||
|
val playerStateLabel = when (playerStateRaw) {
|
||||||
|
PLAYER_STATE_UNKNOWN -> "unknown"
|
||||||
|
PLAYER_STATE_BUFFERING -> "buffering"
|
||||||
|
PLAYER_STATE_IDLE -> "idle"
|
||||||
|
PLAYER_STATE_LOADING -> "loading"
|
||||||
|
PLAYER_STATE_PAUSED -> "paused"
|
||||||
|
PLAYER_STATE_PLAYING -> "playing"
|
||||||
|
else -> "unknown-else"
|
||||||
|
}
|
||||||
|
Log.d(TAG, "RemoteMediaClient - onStatusUpdated: $playerStateLabel")
|
||||||
|
super.onStatusUpdated()
|
||||||
flutterApi?.onStatusUpdated(playerStateRaw.toLong()) { }
|
flutterApi?.onStatusUpdated(playerStateRaw.toLong()) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -209,7 +218,8 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onAdBreakStatusUpdated() {
|
override fun onAdBreakStatusUpdated() {
|
||||||
Log.d(TAG, "RemoteMediaClient - onAdBreakStatusUpdated")
|
val isPlayingAd = remoteMediaClient?.mediaStatus?.isPlayingAd
|
||||||
|
Log.d(TAG, "RemoteMediaClient - onAdBreakStatusUpdated - isPlayingAd: $isPlayingAd")
|
||||||
super.onAdBreakStatusUpdated()
|
super.onAdBreakStatusUpdated()
|
||||||
flutterApi?.onAdBreakStatusUpdated { }
|
flutterApi?.onAdBreakStatusUpdated { }
|
||||||
}
|
}
|
||||||
|
|
@ -221,10 +231,38 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onProgressUpdated(progressMs: Long, durationMs: Long) {
|
override fun onProgressUpdated(progressMs: Long, durationMs: Long) {
|
||||||
|
val isPlayingAd = remoteMediaClient?.mediaStatus?.isPlayingAd ?: false
|
||||||
|
if (isPlayingAd) {
|
||||||
|
fireAdBreakClipProgress()
|
||||||
|
}
|
||||||
|
else {
|
||||||
flutterApi?.onProgressUpdated(progressMs, durationMs) { }
|
flutterApi?.onProgressUpdated(progressMs, durationMs) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun fireAdBreakClipProgress() {
|
||||||
|
val mediaStatus = remoteMediaClient?.mediaStatus ?: return
|
||||||
|
val currentAdBreakClip = mediaStatus.currentAdBreakClip ?: return
|
||||||
|
|
||||||
|
val adBreakId = mediaStatus.currentAdBreak?.id ?: ""
|
||||||
|
val adBreakClipId = currentAdBreakClip.id ?: ""
|
||||||
|
val adBreakClipProgressMs = remoteMediaClient?.approximateAdBreakClipPositionMs
|
||||||
|
?: 0
|
||||||
|
val adBreakClipDurationMs = currentAdBreakClip.durationInMs
|
||||||
|
if (adBreakClipDurationMs <= 0) return
|
||||||
|
|
||||||
|
val whenSkippableMs = currentAdBreakClip.whenSkippableInMs
|
||||||
|
|
||||||
|
flutterApi?.onAdBreakClipProgressUpdated(
|
||||||
|
adBreakId,
|
||||||
|
adBreakClipId,
|
||||||
|
adBreakClipProgressMs,
|
||||||
|
adBreakClipDurationMs,
|
||||||
|
whenSkippableMs,
|
||||||
|
) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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