48 lines
1.5 KiB
Kotlin
48 lines
1.5 KiB
Kotlin
package org.libre.agosto.p2play.services
|
|
|
|
import android.app.PendingIntent
|
|
import android.content.Intent
|
|
import androidx.media3.session.MediaSession
|
|
import androidx.media3.session.MediaSessionService
|
|
import org.libre.agosto.p2play.ReproductorActivity
|
|
import org.libre.agosto.p2play.singletons.PlaybackSingleton
|
|
|
|
class PlaybackService : MediaSessionService() {
|
|
private var mediaSession: MediaSession? = null
|
|
|
|
// Create your Player and MediaSession in the onCreate lifecycle event
|
|
override fun onCreate() {
|
|
super.onCreate()
|
|
val player = PlaybackSingleton.player!!
|
|
mediaSession = MediaSession.Builder(this, player)
|
|
.build()
|
|
val contentIntent = Intent(this, ReproductorActivity::class.java)
|
|
contentIntent.putExtra("resume", true)
|
|
val pendingIntent = PendingIntent.getActivity(
|
|
this,
|
|
0,
|
|
contentIntent,
|
|
PendingIntent.FLAG_MUTABLE,
|
|
)
|
|
mediaSession!!.setSessionActivity(pendingIntent)
|
|
}
|
|
|
|
// Remember to release the player and media session in onDestroy
|
|
override fun onDestroy() {
|
|
mediaSession?.run {
|
|
release()
|
|
mediaSession = null
|
|
}
|
|
super.onDestroy()
|
|
}
|
|
|
|
override fun onTaskRemoved(rootIntent: Intent?) {
|
|
this.mediaSession!!.player.stop()
|
|
super.onTaskRemoved(rootIntent)
|
|
}
|
|
|
|
override fun onGetSession(controllerInfo: MediaSession.ControllerInfo): MediaSession? {
|
|
return mediaSession
|
|
}
|
|
}
|