Merge branch 'renovate/media3' into 'develop'

Update media3 to v1.1.0

See merge request ultrasonic/ultrasonic!1070
This commit is contained in:
birdbird 2023-07-06 15:06:49 +00:00
commit 8990b4d622
5 changed files with 46 additions and 60 deletions

View File

@ -9,7 +9,7 @@ ktlint = "0.43.2"
ktlintGradle = "11.5.0"
detekt = "1.23.0"
preferences = "1.2.0"
media3 = "1.0.2"
media3 = "1.1.0"
androidSupport = "1.6.0"
materialDesign = "1.9.0"

View File

@ -1,40 +0,0 @@
/*
* CustomNotificationProvider.kt
* Copyright (C) 2009-2022 Ultrasonic developers
*
* Distributed under terms of the GNU GPLv3 license.
*/
package org.moire.ultrasonic.playback
import android.content.Context
import androidx.media3.common.Player
import androidx.media3.common.util.UnstableApi
import androidx.media3.session.CommandButton
import androidx.media3.session.DefaultMediaNotificationProvider
import androidx.media3.session.MediaSession
import com.google.common.collect.ImmutableList
import org.koin.core.component.KoinComponent
@UnstableApi
class CustomNotificationProvider(ctx: Context) :
DefaultMediaNotificationProvider(ctx),
KoinComponent {
// By default the skip buttons are not shown in compact view.
// We add the COMMAND_KEY_COMPACT_VIEW_INDEX to show them
// See also: https://github.com/androidx/media/issues/410
override fun getMediaButtons(
session: MediaSession,
playerCommands: Player.Commands,
customLayout: ImmutableList<CommandButton>,
playWhenReady: Boolean
): ImmutableList<CommandButton> {
val commands = super.getMediaButtons(session, playerCommands, customLayout, playWhenReady)
commands.forEachIndexed { index, command ->
command.extras.putInt(COMMAND_KEY_COMPACT_VIEW_INDEX, index)
}
return commands
}
}

View File

@ -130,21 +130,14 @@ class PlaybackService :
private fun initializeSessionAndPlayer() {
if (isStarted) return
setMediaNotificationProvider(CustomNotificationProvider(UApp.applicationContext()))
// TODO: Remove minor code duplication with updateBackend()
val desiredBackend = if (activeServerProvider.getActiveServer().jukeboxByDefault) {
Timber.i("Jukebox enabled by default")
MediaPlayerManager.PlayerBackend.JUKEBOX
} else {
MediaPlayerManager.PlayerBackend.LOCAL
}
player = if (activeServerProvider.getActiveServer().jukeboxByDefault) {
Timber.i("Jukebox enabled by default")
getJukeboxPlayer()
} else {
getLocalPlayer()
}
player = createNewBackend(desiredBackend)
actualBackend = desiredBackend
@ -213,11 +206,7 @@ class PlaybackService :
player.removeListener(listener)
player.release()
player = if (newBackend == MediaPlayerManager.PlayerBackend.JUKEBOX) {
getJukeboxPlayer()
} else {
getLocalPlayer()
}
player = createNewBackend(newBackend)
// Add fresh listeners
player.addListener(listener)
@ -227,6 +216,14 @@ class PlaybackService :
actualBackend = newBackend
}
private fun createNewBackend(newBackend: MediaPlayerManager.PlayerBackend): Player {
return if (newBackend == MediaPlayerManager.PlayerBackend.JUKEBOX) {
getJukeboxPlayer()
} else {
getLocalPlayer()
}
}
private fun getJukeboxPlayer(): Player {
return JukeboxMediaPlayer()
}

View File

@ -206,6 +206,8 @@ class JukeboxMediaPlayer : JukeboxUnimplementedFunctions(), Player {
Player.COMMAND_CHANGE_MEDIA_ITEMS,
Player.COMMAND_GET_TIMELINE,
Player.COMMAND_GET_DEVICE_VOLUME,
Player.COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS,
Player.COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS,
Player.COMMAND_ADJUST_DEVICE_VOLUME,
Player.COMMAND_SET_DEVICE_VOLUME
)
@ -213,6 +215,7 @@ class JukeboxMediaPlayer : JukeboxUnimplementedFunctions(), Player {
if (playlist.isNotEmpty()) {
commandsBuilder.addAll(
Player.COMMAND_GET_CURRENT_MEDIA_ITEM,
Player.COMMAND_GET_METADATA,
Player.COMMAND_GET_MEDIA_ITEMS_METADATA,
Player.COMMAND_PLAY_PAUSE,
Player.COMMAND_PREPARE,
@ -284,6 +287,10 @@ class JukeboxMediaPlayer : JukeboxUnimplementedFunctions(), Player {
override fun setShuffleModeEnabled(shuffleModeEnabled: Boolean) {}
override fun setDeviceVolume(volume: Int) {
setDeviceVolume(volume, 0)
}
override fun setDeviceVolume(volume: Int, flags: Int) {
gain = volume
tasks.remove(SetGain::class.java)
tasks.add(SetGain(floatGain))
@ -299,17 +306,32 @@ class JukeboxMediaPlayer : JukeboxUnimplementedFunctions(), Player {
}
}
@Deprecated("Deprecated in Java")
override fun increaseDeviceVolume() {
increaseDeviceVolume(C.VOLUME_FLAG_SHOW_UI)
}
override fun increaseDeviceVolume(flags: Int) {
gain = (gain + 1).coerceAtMost(MAX_GAIN)
deviceVolume = gain
}
@Deprecated("Deprecated in Java")
override fun decreaseDeviceVolume() {
decreaseDeviceVolume(C.VOLUME_FLAG_SHOW_UI)
}
override fun decreaseDeviceVolume(flags: Int) {
gain = (gain - 1).coerceAtLeast(0)
deviceVolume = gain
}
@Deprecated("Deprecated in Java")
override fun setDeviceMuted(muted: Boolean) {
setDeviceMuted(muted, C.VOLUME_FLAG_SHOW_UI)
}
override fun setDeviceMuted(muted: Boolean, flags: Int) {
gain = 0
deviceVolume = gain
}

View File

@ -67,6 +67,18 @@ abstract class JukeboxUnimplementedFunctions : Player {
TODO("Not yet implemented")
}
override fun replaceMediaItem(index: Int, mediaItem: MediaItem) {
TODO("Not yet implemented")
}
override fun replaceMediaItems(
fromIndex: Int,
toIndex: Int,
mediaItems: MutableList<MediaItem>
) {
TODO("Not yet implemented")
}
override fun setPlayWhenReady(playWhenReady: Boolean) {
TODO("Not yet implemented")
}
@ -134,11 +146,6 @@ abstract class JukeboxUnimplementedFunctions : Player {
override fun setPlaybackSpeed(speed: Float) {
TODO("Not yet implemented")
}
override fun stop(reset: Boolean) {
TODO("Not yet implemented")
}
override fun getCurrentTracks(): Tracks {
// TODO Dummy information is returned for now, this seems to work
return Tracks.EMPTY