mirror of
https://gitlab.com/ultrasonic/ultrasonic.git
synced 2025-04-14 00:17:15 +03:00
Update media3 to v1.1.0
This commit is contained in:
parent
9fd2a91f15
commit
211af57e8b
@ -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"
|
||||
|
@ -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
|
||||
}
|
||||
}
|
@ -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()
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user