feat(service): add ExoPlayer controller and MediaSessionService

This commit is contained in:
nk
2026-06-01 12:21:22 +03:00
parent 9d68459df6
commit cf79af5273
2 changed files with 114 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
package com.radiola.service
import android.app.PendingIntent
import android.content.Intent
import androidx.media3.common.util.UnstableApi
import androidx.media3.session.MediaSession
import androidx.media3.session.MediaSessionService
import com.radiola.MainActivity
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@AndroidEntryPoint
@UnstableApi
class PlayerService : MediaSessionService() {
@Inject
lateinit var playerController: PlayerController
private var mediaSession: MediaSession? = null
override fun onCreate() {
super.onCreate()
mediaSession = MediaSession.Builder(this, playerController.exoPlayer)
.setSessionActivity(
PendingIntent.getActivity(
this,
0,
Intent(this, MainActivity::class.java),
PendingIntent.FLAG_IMMUTABLE
)
)
.build()
}
override fun onGetSession(controllerInfo: MediaSession.ControllerInfo): MediaSession? = mediaSession
override fun onTaskRemoved(rootIntent: Intent?) {
if (!playerController.isPlaying.value) {
stopSelf()
}
}
override fun onDestroy() {
mediaSession?.run {
player.release()
release()
}
mediaSession = null
super.onDestroy()
}
}