diff --git a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/controller/ConsumptionReportingController.kt b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/controller/ConsumptionReportingController.kt index cfed047..d35a465 100644 --- a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/controller/ConsumptionReportingController.kt +++ b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/controller/ConsumptionReportingController.kt @@ -19,7 +19,7 @@ import com.fivegmag.a5gmscommonlibrary.helpers.SessionHandlerMessageTypes import com.fivegmag.a5gmscommonlibrary.session.PlaybackRequest import com.fivegmag.a5gmsmediastreamhandler.player.ConsumptionReporter import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.ConsumptionReporterExoplayer -import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.ExoPlayerAdapter +import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.IExoPlayerAdapter import com.fivegmag.a5gmsmediastreamhandler.service.OutgoingMessageHandler import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe @@ -27,7 +27,7 @@ import org.greenrobot.eventbus.ThreadMode @UnstableApi class ConsumptionReportingController( - private val exoPlayerAdapter: ExoPlayerAdapter, + private val exoPlayerAdapter: IExoPlayerAdapter, private val outgoingMessageHandler: OutgoingMessageHandler ) : IConsumptionReportingController { companion object { diff --git a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/controller/QoEMetricsReportingController.kt b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/controller/QoEMetricsReportingController.kt index a4b435c..e2197f0 100644 --- a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/controller/QoEMetricsReportingController.kt +++ b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/controller/QoEMetricsReportingController.kt @@ -11,19 +11,18 @@ import com.fivegmag.a5gmscommonlibrary.qoeMetricsReporting.QoeMetricsRequest import com.fivegmag.a5gmscommonlibrary.qoeMetricsReporting.QoeMetricsResponse import com.fivegmag.a5gmscommonlibrary.session.PlaybackRequest import com.fivegmag.a5gmsmediastreamhandler.MediaSessionHandlerAdapter -import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.ExoPlayerAdapter +import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.IExoPlayerAdapter import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.QoeMetricsReporterExoplayer import com.fivegmag.a5gmsmediastreamhandler.service.OutgoingMessageHandler import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode -import java.lang.Exception import kotlin.reflect.KClass import kotlin.reflect.full.primaryConstructor @UnstableApi class QoEMetricsReportingController( - private val exoPlayerAdapter: ExoPlayerAdapter, + private val exoPlayerAdapter: IExoPlayerAdapter, private val outgoingMessageHandler: OutgoingMessageHandler ) : IQoEMetricsReportingController { diff --git a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/controller/SessionController.kt b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/controller/SessionController.kt index a3641b4..158efb5 100644 --- a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/controller/SessionController.kt +++ b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/controller/SessionController.kt @@ -12,7 +12,7 @@ import com.fivegmag.a5gmscommonlibrary.eventbus.PlaybackStateChangedEvent import com.fivegmag.a5gmscommonlibrary.helpers.ContentTypes import com.fivegmag.a5gmscommonlibrary.models.EntryPoint import com.fivegmag.a5gmscommonlibrary.session.PlaybackRequest -import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.ExoPlayerAdapter +import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.IExoPlayerAdapter import com.fivegmag.a5gmsmediastreamhandler.service.OutgoingMessageHandler import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe @@ -20,7 +20,7 @@ import org.greenrobot.eventbus.ThreadMode class SessionController( private val context: Context, - private val exoPlayerAdapter: ExoPlayerAdapter, + private val exoPlayerAdapter: IExoPlayerAdapter, private val outgoingMessageHandler: OutgoingMessageHandler ) : ISessionController { diff --git a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/ConsumptionReporterExoplayer.kt b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/ConsumptionReporterExoplayer.kt index 2bfde2e..7c58ff0 100644 --- a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/ConsumptionReporterExoplayer.kt +++ b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/ConsumptionReporterExoplayer.kt @@ -28,7 +28,7 @@ import java.lang.Exception import java.util.Date class ConsumptionReporterExoplayer( - private val exoPlayerAdapter: ExoPlayerAdapter + private val exoPlayerAdapter: IExoPlayerAdapter ) : ConsumptionReporter() { companion object { diff --git a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/ExoPlayerAdapter.kt b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/ExoPlayerAdapter.kt index c6994db..0235fec 100644 --- a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/ExoPlayerAdapter.kt +++ b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/ExoPlayerAdapter.kt @@ -21,7 +21,7 @@ import com.fivegmag.a5gmscommonlibrary.helpers.StatusInformation import com.fivegmag.a5gmscommonlibrary.helpers.UserAgentTokens @UnstableApi -class ExoPlayerAdapter() { +class ExoPlayerAdapter() : IExoPlayerAdapter { private lateinit var playerInstance: ExoPlayer private lateinit var playerView: PlayerView @@ -31,7 +31,7 @@ class ExoPlayerAdapter() { private lateinit var bandwidthMeter: DefaultBandwidthMeter - fun initialize( + override fun initialize( exoPlayerView: PlayerView, context: Context ) { @@ -62,7 +62,7 @@ class ExoPlayerAdapter() { playerInstance.addAnalyticsListener(playerListener) } - fun attach(url: String, contentType: String = "") { + override fun attach(url: String, contentType: String) { val mediaItem: MediaItem when (contentType) { ContentTypes.DASH -> { @@ -89,62 +89,62 @@ class ExoPlayerAdapter() { activeManifestUrl = url } - fun hasActiveMediaItem() : Boolean { + override fun hasActiveMediaItem() : Boolean { return activeMediaItem != null } - fun getCurrentManifestUri(): String { + override fun getCurrentManifestUri(): String { return activeManifestUrl } - fun getCurrentManifestUrl(): String { + override fun getCurrentManifestUrl(): String { return playerInstance.currentMediaItem?.localConfiguration?.uri.toString() } - fun preload() { + override fun preload() { playerInstance.prepare() } - fun play() { + override fun play() { playerInstance.play() } - fun pause() { + override fun pause() { playerInstance.pause() } - fun seek(time: Long) { + override fun seek(time: Long) { TODO("Not yet implemented") } - fun stop() { + override fun stop() { playerInstance.stop() } - fun reset() { + override fun reset() { TODO("Not yet implemented") } - fun destroy() { + override fun destroy() { playerInstance.release() } - fun getPlayerInstance(): ExoPlayer { + override fun getPlayerInstance(): ExoPlayer { return playerInstance } - fun getPlaybackState(): Int { + override fun getPlaybackState(): Int { return playerInstance.playbackState } - fun getCurrentPosition(): Long { + override fun getCurrentPosition(): Long { return playerInstance.currentPosition } - fun getBufferLength(): Long { + override fun getBufferLength(): Long { return playerInstance.totalBufferedDuration } - fun getAverageThroughput(): Long { + override fun getAverageThroughput(): Long { return bandwidthMeter.bitrateEstimate } @@ -152,7 +152,7 @@ class ExoPlayerAdapter() { return playerInstance.currentLiveOffset } - fun getCurrentPeriodId(): String { + override fun getCurrentPeriodId(): String { val dashManifest = playerInstance.currentManifest as DashManifest val periodId = dashManifest.getPeriod(playerInstance.currentPeriodIndex).id @@ -163,7 +163,7 @@ class ExoPlayerAdapter() { return "" } - fun getStatusInformation(status: String): Any? { + override fun getStatusInformation(status: String): Any? { when (status) { StatusInformation.AVERAGE_THROUGHPUT -> return getAverageThroughput() StatusInformation.BUFFER_LENGTH -> return getBufferLength() @@ -174,7 +174,7 @@ class ExoPlayerAdapter() { } } - fun getPlayerState(): String { + override fun getPlayerState(): String { val state: String? if (playerInstance.isPlaying) { state = PlayerStates.PLAYING diff --git a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/ExoPlayerListener.kt b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/ExoPlayerListener.kt index cbaae4d..9bc91c0 100644 --- a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/ExoPlayerListener.kt +++ b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/ExoPlayerListener.kt @@ -22,8 +22,7 @@ import org.greenrobot.eventbus.EventBus class ExoPlayerListener( private val playerInstance: ExoPlayer, private val playerView: PlayerView, -) : - AnalyticsListener { +) : AnalyticsListener { companion object { const val TAG = "5GMS-ExoPlayerListener" diff --git a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/IExoPlayerAdapter.kt b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/IExoPlayerAdapter.kt new file mode 100644 index 0000000..0568782 --- /dev/null +++ b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/IExoPlayerAdapter.kt @@ -0,0 +1,33 @@ +package com.fivegmag.a5gmsmediastreamhandler.player.exoplayer + +import android.content.Context +import androidx.media3.exoplayer.ExoPlayer +import androidx.media3.ui.PlayerView + +interface IExoPlayerAdapter { + + fun initialize( + exoPlayerView: PlayerView, + context: Context + ) + + fun attach(url: String, contentType: String = "") + fun hasActiveMediaItem() : Boolean + fun getCurrentManifestUri(): String + fun getCurrentManifestUrl(): String + fun preload() + fun play() + fun pause() + fun seek(time: Long) + fun stop() + fun reset() + fun destroy() + fun getPlayerInstance(): ExoPlayer + fun getPlaybackState(): Int + fun getCurrentPosition(): Long + fun getBufferLength(): Long + fun getAverageThroughput(): Long + fun getCurrentPeriodId(): String + fun getStatusInformation(status: String): Any? + fun getPlayerState(): String +} \ No newline at end of file diff --git a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/QoeMetricsReporterExoplayer.kt b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/QoeMetricsReporterExoplayer.kt index 207c28c..82d0ec9 100644 --- a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/QoeMetricsReporterExoplayer.kt +++ b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/player/exoplayer/QoeMetricsReporterExoplayer.kt @@ -39,7 +39,7 @@ import java.util.TimerTask @UnstableApi class QoeMetricsReporterExoplayer( - private val exoPlayerAdapter: ExoPlayerAdapter + private val exoPlayerAdapter: IExoPlayerAdapter ) : IQoeMetricsReporter { private val representationSwitchList: RepresentationSwitchList = RepresentationSwitchList( ArrayList() diff --git a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/service/MessengerService.kt b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/service/MessengerService.kt index a774ede..4411b3b 100644 --- a/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/service/MessengerService.kt +++ b/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/service/MessengerService.kt @@ -8,7 +8,6 @@ import android.os.IBinder import android.util.Log import androidx.media3.common.util.UnstableApi import com.fivegmag.a5gmscommonlibrary.models.ServiceListEntry -import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.ExoPlayerAdapter class MessengerService( private val context: Context