mirror of
https://github.com/antebudimir/tempus.git
synced 2025-12-31 17:43:32 +00:00
16 bug it only plays the first song on an album (#81)
This commit is contained in:
commit
cd2ab36351
3 changed files with 125 additions and 74 deletions
|
|
@ -10,8 +10,8 @@ android {
|
||||||
minSdkVersion 24
|
minSdkVersion 24
|
||||||
targetSdk 35
|
targetSdk 35
|
||||||
|
|
||||||
versionCode 31
|
versionCode 32
|
||||||
versionName '3.14.8'
|
versionName '3.14.9'
|
||||||
|
|
||||||
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -199,8 +199,17 @@ class MediaService : MediaLibraryService(), SessionAvailabilityListener {
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getQueueFromPlayer(player: Player): List<MediaItem> {
|
||||||
|
val queue = mutableListOf<MediaItem>()
|
||||||
|
for (i in 0 until player.mediaItemCount) {
|
||||||
|
queue.add(player.getMediaItemAt(i))
|
||||||
|
}
|
||||||
|
return queue
|
||||||
|
}
|
||||||
|
|
||||||
private fun setPlayer(oldPlayer: Player?, newPlayer: Player) {
|
private fun setPlayer(oldPlayer: Player?, newPlayer: Player) {
|
||||||
if (oldPlayer === newPlayer) return
|
if (oldPlayer === newPlayer) return
|
||||||
|
|
||||||
oldPlayer?.stop()
|
oldPlayer?.stop()
|
||||||
mediaLibrarySession.player = newPlayer
|
mediaLibrarySession.player = newPlayer
|
||||||
}
|
}
|
||||||
|
|
@ -211,7 +220,6 @@ class MediaService : MediaLibraryService(), SessionAvailabilityListener {
|
||||||
player.release()
|
player.release()
|
||||||
mediaLibrarySession.release()
|
mediaLibrarySession.release()
|
||||||
automotiveRepository.deleteMetadata()
|
automotiveRepository.deleteMetadata()
|
||||||
clearListener()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getRenderersFactory() = DownloadUtil.buildRenderersFactory(this, false)
|
private fun getRenderersFactory() = DownloadUtil.buildRenderersFactory(this, false)
|
||||||
|
|
@ -220,10 +228,28 @@ class MediaService : MediaLibraryService(), SessionAvailabilityListener {
|
||||||
DefaultMediaSourceFactory(this).setDataSourceFactory(DownloadUtil.getDataSourceFactory(this))
|
DefaultMediaSourceFactory(this).setDataSourceFactory(DownloadUtil.getDataSourceFactory(this))
|
||||||
|
|
||||||
override fun onCastSessionAvailable() {
|
override fun onCastSessionAvailable() {
|
||||||
|
val currentQueue = getQueueFromPlayer(player)
|
||||||
|
val currentIndex = player.currentMediaItemIndex
|
||||||
|
val currentPosition = player.currentPosition
|
||||||
|
val isPlaying = player.playWhenReady
|
||||||
|
|
||||||
setPlayer(player, castPlayer)
|
setPlayer(player, castPlayer)
|
||||||
|
|
||||||
|
castPlayer.setMediaItems(currentQueue, currentIndex, currentPosition)
|
||||||
|
castPlayer.playWhenReady = isPlaying
|
||||||
|
castPlayer.prepare()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCastSessionUnavailable() {
|
override fun onCastSessionUnavailable() {
|
||||||
|
val currentQueue = getQueueFromPlayer(castPlayer)
|
||||||
|
val currentIndex = castPlayer.currentMediaItemIndex
|
||||||
|
val currentPosition = castPlayer.currentPosition
|
||||||
|
val isPlaying = castPlayer.playWhenReady
|
||||||
|
|
||||||
setPlayer(castPlayer, player)
|
setPlayer(castPlayer, player)
|
||||||
|
|
||||||
|
player.setMediaItems(currentQueue, currentIndex, currentPosition)
|
||||||
|
player.playWhenReady = isPlaying
|
||||||
|
player.prepare()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -199,6 +199,14 @@ class MediaService : MediaLibraryService(), SessionAvailabilityListener {
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getQueueFromPlayer(player: Player): List<MediaItem> {
|
||||||
|
val queue = mutableListOf<MediaItem>()
|
||||||
|
for (i in 0 until player.mediaItemCount) {
|
||||||
|
queue.add(player.getMediaItemAt(i))
|
||||||
|
}
|
||||||
|
return queue
|
||||||
|
}
|
||||||
|
|
||||||
private fun setPlayer(oldPlayer: Player?, newPlayer: Player) {
|
private fun setPlayer(oldPlayer: Player?, newPlayer: Player) {
|
||||||
if (oldPlayer === newPlayer) return
|
if (oldPlayer === newPlayer) return
|
||||||
oldPlayer?.stop()
|
oldPlayer?.stop()
|
||||||
|
|
@ -211,7 +219,6 @@ class MediaService : MediaLibraryService(), SessionAvailabilityListener {
|
||||||
player.release()
|
player.release()
|
||||||
mediaLibrarySession.release()
|
mediaLibrarySession.release()
|
||||||
automotiveRepository.deleteMetadata()
|
automotiveRepository.deleteMetadata()
|
||||||
clearListener()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getRenderersFactory() = DownloadUtil.buildRenderersFactory(this, false)
|
private fun getRenderersFactory() = DownloadUtil.buildRenderersFactory(this, false)
|
||||||
|
|
@ -220,10 +227,28 @@ class MediaService : MediaLibraryService(), SessionAvailabilityListener {
|
||||||
DefaultMediaSourceFactory(this).setDataSourceFactory(DownloadUtil.getDataSourceFactory(this))
|
DefaultMediaSourceFactory(this).setDataSourceFactory(DownloadUtil.getDataSourceFactory(this))
|
||||||
|
|
||||||
override fun onCastSessionAvailable() {
|
override fun onCastSessionAvailable() {
|
||||||
|
val currentQueue = getQueueFromPlayer(player)
|
||||||
|
val currentIndex = player.currentMediaItemIndex
|
||||||
|
val currentPosition = player.currentPosition
|
||||||
|
val isPlaying = player.playWhenReady
|
||||||
|
|
||||||
setPlayer(player, castPlayer)
|
setPlayer(player, castPlayer)
|
||||||
|
|
||||||
|
castPlayer.setMediaItems(currentQueue, currentIndex, currentPosition)
|
||||||
|
castPlayer.playWhenReady = isPlaying
|
||||||
|
castPlayer.prepare()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCastSessionUnavailable() {
|
override fun onCastSessionUnavailable() {
|
||||||
|
val currentQueue = getQueueFromPlayer(castPlayer)
|
||||||
|
val currentIndex = castPlayer.currentMediaItemIndex
|
||||||
|
val currentPosition = castPlayer.currentPosition
|
||||||
|
val isPlaying = castPlayer.playWhenReady
|
||||||
|
|
||||||
setPlayer(castPlayer, player)
|
setPlayer(castPlayer, player)
|
||||||
|
|
||||||
|
player.setMediaItems(currentQueue, currentIndex, currentPosition)
|
||||||
|
player.playWhenReady = isPlaying
|
||||||
|
player.prepare()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue