Convert player listener to an extension as well
This commit is contained in:
parent
7f26701507
commit
a6818e4084
3 changed files with 10 additions and 11 deletions
|
@ -9,14 +9,13 @@ import androidx.media3.common.*
|
||||||
import androidx.media3.common.util.UnstableApi
|
import androidx.media3.common.util.UnstableApi
|
||||||
import androidx.media3.session.*
|
import androidx.media3.session.*
|
||||||
import com.simplemobiletools.commons.extensions.hasPermission
|
import com.simplemobiletools.commons.extensions.hasPermission
|
||||||
import com.simplemobiletools.commons.extensions.toast
|
import com.simplemobiletools.commons.extensions.showErrorToast
|
||||||
import com.simplemobiletools.musicplayer.R
|
import com.simplemobiletools.musicplayer.R
|
||||||
import com.simplemobiletools.musicplayer.extensions.*
|
import com.simplemobiletools.musicplayer.extensions.*
|
||||||
import com.simplemobiletools.musicplayer.helpers.NotificationHelper
|
import com.simplemobiletools.musicplayer.helpers.NotificationHelper
|
||||||
import com.simplemobiletools.musicplayer.helpers.PlaybackSetting
|
import com.simplemobiletools.musicplayer.helpers.PlaybackSetting
|
||||||
import com.simplemobiletools.musicplayer.helpers.getPermissionToRequest
|
import com.simplemobiletools.musicplayer.helpers.getPermissionToRequest
|
||||||
import com.simplemobiletools.musicplayer.playback.library.MediaItemProvider
|
import com.simplemobiletools.musicplayer.playback.library.MediaItemProvider
|
||||||
import com.simplemobiletools.musicplayer.playback.player.PlayerListener
|
|
||||||
import com.simplemobiletools.musicplayer.playback.player.SimpleMusicPlayer
|
import com.simplemobiletools.musicplayer.playback.player.SimpleMusicPlayer
|
||||||
import com.simplemobiletools.musicplayer.playback.player.initializeSessionAndPlayer
|
import com.simplemobiletools.musicplayer.playback.player.initializeSessionAndPlayer
|
||||||
|
|
||||||
|
@ -24,10 +23,10 @@ import com.simplemobiletools.musicplayer.playback.player.initializeSessionAndPla
|
||||||
class PlaybackService : MediaLibraryService(), MediaSessionService.Listener {
|
class PlaybackService : MediaLibraryService(), MediaSessionService.Listener {
|
||||||
internal lateinit var player: SimpleMusicPlayer
|
internal lateinit var player: SimpleMusicPlayer
|
||||||
internal lateinit var playerThread: HandlerThread
|
internal lateinit var playerThread: HandlerThread
|
||||||
|
internal lateinit var playerListener: Player.Listener
|
||||||
internal lateinit var mediaSession: MediaLibrarySession
|
internal lateinit var mediaSession: MediaLibrarySession
|
||||||
internal lateinit var mediaItemProvider: MediaItemProvider
|
internal lateinit var mediaItemProvider: MediaItemProvider
|
||||||
|
|
||||||
internal var listener: PlayerListener? = null
|
|
||||||
internal var currentRoot = ""
|
internal var currentRoot = ""
|
||||||
|
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
|
@ -68,7 +67,7 @@ class PlaybackService : MediaLibraryService(), MediaSessionService.Listener {
|
||||||
private fun releaseMediaSession() {
|
private fun releaseMediaSession() {
|
||||||
mediaSession.release()
|
mediaSession.release()
|
||||||
withPlayer {
|
withPlayer {
|
||||||
removeListener(listener!!)
|
removeListener(playerListener)
|
||||||
release()
|
release()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -108,7 +107,7 @@ class PlaybackService : MediaLibraryService(), MediaSessionService.Listener {
|
||||||
* background.
|
* background.
|
||||||
*/
|
*/
|
||||||
override fun onForegroundServiceStartNotAllowedException() {
|
override fun onForegroundServiceStartNotAllowedException() {
|
||||||
toast(R.string.unknown_error_occurred)
|
showErrorToast(getString(R.string.unknown_error_occurred))
|
||||||
// todo: show a notification instead.
|
// todo: show a notification instead.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,13 +27,13 @@ internal fun PlaybackService.initializeSessionAndPlayer(handleAudioFocus: Boolea
|
||||||
// all player operations are handled on a separate thread to avoid slowing down the main thread.
|
// all player operations are handled on a separate thread to avoid slowing down the main thread.
|
||||||
playerThread = HandlerThread(PLAYER_THREAD, Process.THREAD_PRIORITY_AUDIO).also { it.start() }
|
playerThread = HandlerThread(PLAYER_THREAD, Process.THREAD_PRIORITY_AUDIO).also { it.start() }
|
||||||
player = initializePlayer(handleAudioFocus, handleAudioBecomingNoisy, skipSilence)
|
player = initializePlayer(handleAudioFocus, handleAudioBecomingNoisy, skipSilence)
|
||||||
listener = PlayerListener(context = this)
|
playerListener = getPlayerListener()
|
||||||
mediaSession = MediaLibraryService.MediaLibrarySession.Builder(this, player, getMediaSessionCallback())
|
mediaSession = MediaLibraryService.MediaLibrarySession.Builder(this, player, getMediaSessionCallback())
|
||||||
.setSessionActivity(getSessionActivityIntent())
|
.setSessionActivity(getSessionActivityIntent())
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
withPlayer {
|
withPlayer {
|
||||||
addListener(listener!!)
|
addListener(playerListener)
|
||||||
updateRepeatMode()
|
updateRepeatMode()
|
||||||
setPlaybackSpeed(config.playbackSpeed)
|
setPlaybackSpeed(config.playbackSpeed)
|
||||||
shuffleModeEnabled = config.isShuffleEnabled
|
shuffleModeEnabled = config.isShuffleEnabled
|
||||||
|
|
|
@ -11,9 +11,9 @@ import com.simplemobiletools.musicplayer.playback.PlaybackService
|
||||||
import com.simplemobiletools.musicplayer.playback.PlaybackService.Companion.updatePlaybackInfo
|
import com.simplemobiletools.musicplayer.playback.PlaybackService.Companion.updatePlaybackInfo
|
||||||
|
|
||||||
@UnstableApi
|
@UnstableApi
|
||||||
class PlayerListener(private val context: PlaybackService) : Player.Listener {
|
internal fun PlaybackService.getPlayerListener() = object : Player.Listener {
|
||||||
|
|
||||||
override fun onPlayerError(error: PlaybackException) = context.toast(R.string.unknown_error_occurred, Toast.LENGTH_LONG)
|
override fun onPlayerError(error: PlaybackException) = toast(R.string.unknown_error_occurred, Toast.LENGTH_LONG)
|
||||||
|
|
||||||
override fun onEvents(player: Player, events: Player.Events) {
|
override fun onEvents(player: Player, events: Player.Events) {
|
||||||
if (
|
if (
|
||||||
|
@ -28,8 +28,8 @@ class PlayerListener(private val context: PlaybackService) : Player.Listener {
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
updatePlaybackInfo(player)
|
updatePlaybackInfo(player)
|
||||||
context.saveCurrentPlaybackInfo()
|
saveCurrentPlaybackInfo()
|
||||||
context.broadcastUpdateWidgetState()
|
broadcastUpdateWidgetState()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue