Skip to content

Commit 6d03707

Browse files
authored
Don't force PillarboxExoPlayer instance in Services (#890)
1 parent e841349 commit 6d03707

File tree

3 files changed

+18
-21
lines changed

3 files changed

+18
-21
lines changed

pillarbox-demo/src/main/java/ch/srgssr/pillarbox/demo/service/DemoMediaLibraryService.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import android.app.PendingIntent
88
import android.content.Intent
99
import android.os.Bundle
1010
import android.util.Log
11+
import androidx.media3.common.C
1112
import androidx.media3.common.MediaItem
1213
import androidx.media3.session.LibraryResult
1314
import androidx.media3.session.MediaSession
@@ -35,7 +36,9 @@ class DemoMediaLibraryService : PillarboxMediaLibraryService() {
3536
override fun onCreate() {
3637
super.onCreate()
3738
demoBrowser = DemoBrowser()
38-
val player = PlayerModule.provideDefaultPlayer(this)
39+
val player = PlayerModule.provideDefaultPlayer(this).apply {
40+
setWakeMode(C.WAKE_MODE_NETWORK)
41+
}
3942
setPlayer(player = player, callback = DemoCallback(), sessionId = "AndroidAutoSession")
4043
}
4144

pillarbox-player/src/main/java/ch/srgssr/pillarbox/player/session/PillarboxMediaLibraryService.kt

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,18 @@ package ch.srgssr.pillarbox.player.session
66

77
import android.app.PendingIntent
88
import android.content.Intent
9-
import androidx.media3.common.C
10-
import androidx.media3.common.Player
119
import androidx.media3.session.MediaLibraryService
1210
import androidx.media3.session.MediaSession
1311
import androidx.media3.session.MediaSession.ControllerInfo
14-
import ch.srgssr.pillarbox.player.PillarboxExoPlayer
12+
import ch.srgssr.pillarbox.player.PillarboxPlayer
1513
import ch.srgssr.pillarbox.player.extension.setHandleAudioFocus
1614
import ch.srgssr.pillarbox.player.utils.PendingIntentUtils
1715

1816
/**
1917
* `PillarboxMediaLibraryService` implementation of [MediaLibraryService].
2018
* It is the recommended way to make background playback for Android and sharing content with Android Auto.
2119
*
22-
* It handles only one [MediaSession] with one [PillarboxExoPlayer].
20+
* It handles only one [MediaSession] with one [PillarboxPlayer].
2321
*
2422
* Usage:
2523
* Add these permissions inside your manifest:
@@ -57,7 +55,6 @@ import ch.srgssr.pillarbox.player.utils.PendingIntentUtils
5755
* ```
5856
*/
5957
abstract class PillarboxMediaLibraryService : MediaLibraryService() {
60-
private var player: Player? = null
6158
private var mediaSession: PillarboxMediaLibrarySession? = null
6259

6360
/**
@@ -67,18 +64,16 @@ abstract class PillarboxMediaLibraryService : MediaLibraryService() {
6764

6865
/**
6966
* Set player to use with this Service.
70-
* @param player [PillarboxExoPlayer] to link to this service.
67+
* @param player [PillarboxPlayer] to link to this service.
7168
* @param callback The [PillarboxMediaLibrarySession.Callback]
7269
* @param sessionId The ID. Must be unique among all sessions per package.
7370
*/
7471
fun setPlayer(
75-
player: PillarboxExoPlayer,
72+
player: PillarboxPlayer,
7673
callback: PillarboxMediaLibrarySession.Callback,
7774
sessionId: String? = null,
7875
) {
79-
if (this.player == null) {
80-
this.player = player
81-
player.setWakeMode(C.WAKE_MODE_NETWORK)
76+
if (this.mediaSession == null) {
8277
player.setHandleAudioFocus(true)
8378
mediaSession = PillarboxMediaLibrarySession.Builder(this, player, callback).apply {
8479
sessionActivity()?.let {
@@ -88,6 +83,8 @@ abstract class PillarboxMediaLibraryService : MediaLibraryService() {
8883
setId(it)
8984
}
9085
}.build()
86+
} else {
87+
mediaSession?.player = player
9188
}
9289
}
9390

pillarbox-player/src/main/java/ch/srgssr/pillarbox/player/session/PillarboxMediaSessionService.kt

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,17 @@ package ch.srgssr.pillarbox.player.session
66

77
import android.app.PendingIntent
88
import android.content.Intent
9-
import androidx.media3.common.C
10-
import androidx.media3.common.Player
119
import androidx.media3.session.MediaSession
1210
import androidx.media3.session.MediaSessionService
13-
import ch.srgssr.pillarbox.player.PillarboxExoPlayer
11+
import ch.srgssr.pillarbox.player.PillarboxPlayer
1412
import ch.srgssr.pillarbox.player.extension.setHandleAudioFocus
1513
import ch.srgssr.pillarbox.player.utils.PendingIntentUtils
1614

1715
/**
1816
* `PillarboxMediaSessionService` implementation of [MediaSessionService].
1917
* It is the recommended way to make background playback for Android.
2018
*
21-
* It handles only one [MediaSession] with one [PillarboxExoPlayer].
19+
* It handles only one [MediaSession] with one [PillarboxPlayer].
2220
*
2321
* Usage:
2422
* Add these permissions inside your manifest:
@@ -53,7 +51,6 @@ import ch.srgssr.pillarbox.player.utils.PendingIntentUtils
5351
*/
5452
@Suppress("MemberVisibilityCanBePrivate")
5553
abstract class PillarboxMediaSessionService : MediaSessionService() {
56-
private var player: Player? = null
5754
private var mediaSession: PillarboxMediaSession? = null
5855

5956
/**
@@ -63,18 +60,16 @@ abstract class PillarboxMediaSessionService : MediaSessionService() {
6360

6461
/**
6562
* Set player to use with this Service.
66-
* @param player [PillarboxExoPlayer] to link to this service.
63+
* @param player [PillarboxPlayer] to link to this service.
6764
* @param mediaSessionCallback The [PillarboxMediaSession.Callback]
6865
* @param sessionId The ID. Must be unique among all sessions per package.
6966
*/
7067
fun setPlayer(
71-
player: PillarboxExoPlayer,
68+
player: PillarboxPlayer,
7269
mediaSessionCallback: PillarboxMediaSession.Callback = PillarboxMediaSession.Callback.Default,
7370
sessionId: String? = null,
7471
) {
75-
if (this.player == null) {
76-
this.player = player
77-
player.setWakeMode(C.WAKE_MODE_NETWORK)
72+
if (this.mediaSession == null) {
7873
player.setHandleAudioFocus(true)
7974
mediaSession = PillarboxMediaSession.Builder(this, player).apply {
8075
sessionActivity()?.let {
@@ -85,6 +80,8 @@ abstract class PillarboxMediaSessionService : MediaSessionService() {
8580
setId(it)
8681
}
8782
}.build()
83+
} else {
84+
mediaSession?.player = player
8885
}
8986
}
9087

0 commit comments

Comments
 (0)