52 lines
1.5 KiB
Kotlin
52 lines
1.5 KiB
Kotlin
package org.libre.agosto.p2play.singletons
|
|
|
|
import android.content.ComponentName
|
|
import android.content.Context
|
|
import androidx.media3.common.MediaItem
|
|
import androidx.media3.exoplayer.ExoPlayer
|
|
import androidx.media3.session.MediaController
|
|
import androidx.media3.session.SessionToken
|
|
import com.google.common.util.concurrent.MoreExecutors
|
|
import org.libre.agosto.p2play.models.VideoModel
|
|
import org.libre.agosto.p2play.services.PlaybackService
|
|
|
|
object PlaybackSingleton {
|
|
var player: ExoPlayer? = null
|
|
var video: VideoModel? = null
|
|
private var withMediaSession = false
|
|
|
|
fun setData(mediaItem: MediaItem, video: VideoModel): ExoPlayer? {
|
|
player?.let {
|
|
if (it.isPlaying) {
|
|
it.pause()
|
|
}
|
|
it.setMediaItem(mediaItem)
|
|
it.prepare()
|
|
this.video = video
|
|
return it
|
|
}
|
|
|
|
return null
|
|
}
|
|
|
|
fun release() {
|
|
player?.release()
|
|
}
|
|
|
|
fun runMediaSession(context: Context) {
|
|
if (!this.withMediaSession) {
|
|
val sessionToken = SessionToken(context, ComponentName(context, PlaybackService::class.java))
|
|
|
|
val controllerFuture = MediaController.Builder(context, sessionToken).buildAsync()
|
|
|
|
controllerFuture.addListener(
|
|
{
|
|
val med = controllerFuture.get()
|
|
},
|
|
MoreExecutors.directExecutor(),
|
|
)
|
|
this.withMediaSession = true
|
|
}
|
|
}
|
|
}
|