mirror of
https://gitlab.com/ultrasonic/ultrasonic.git
synced 2025-04-18 18:17:43 +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"
|
ktlintGradle = "11.5.0"
|
||||||
detekt = "1.23.0"
|
detekt = "1.23.0"
|
||||||
preferences = "1.2.0"
|
preferences = "1.2.0"
|
||||||
media3 = "1.0.2"
|
media3 = "1.1.0"
|
||||||
|
|
||||||
androidSupport = "1.6.0"
|
androidSupport = "1.6.0"
|
||||||
materialDesign = "1.9.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() {
|
private fun initializeSessionAndPlayer() {
|
||||||
if (isStarted) return
|
if (isStarted) return
|
||||||
|
|
||||||
setMediaNotificationProvider(CustomNotificationProvider(UApp.applicationContext()))
|
|
||||||
|
|
||||||
// TODO: Remove minor code duplication with updateBackend()
|
|
||||||
val desiredBackend = if (activeServerProvider.getActiveServer().jukeboxByDefault) {
|
val desiredBackend = if (activeServerProvider.getActiveServer().jukeboxByDefault) {
|
||||||
|
Timber.i("Jukebox enabled by default")
|
||||||
MediaPlayerManager.PlayerBackend.JUKEBOX
|
MediaPlayerManager.PlayerBackend.JUKEBOX
|
||||||
} else {
|
} else {
|
||||||
MediaPlayerManager.PlayerBackend.LOCAL
|
MediaPlayerManager.PlayerBackend.LOCAL
|
||||||
}
|
}
|
||||||
|
|
||||||
player = if (activeServerProvider.getActiveServer().jukeboxByDefault) {
|
player = createNewBackend(desiredBackend)
|
||||||
Timber.i("Jukebox enabled by default")
|
|
||||||
getJukeboxPlayer()
|
|
||||||
} else {
|
|
||||||
getLocalPlayer()
|
|
||||||
}
|
|
||||||
|
|
||||||
actualBackend = desiredBackend
|
actualBackend = desiredBackend
|
||||||
|
|
||||||
@ -213,11 +206,7 @@ class PlaybackService :
|
|||||||
player.removeListener(listener)
|
player.removeListener(listener)
|
||||||
player.release()
|
player.release()
|
||||||
|
|
||||||
player = if (newBackend == MediaPlayerManager.PlayerBackend.JUKEBOX) {
|
player = createNewBackend(newBackend)
|
||||||
getJukeboxPlayer()
|
|
||||||
} else {
|
|
||||||
getLocalPlayer()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add fresh listeners
|
// Add fresh listeners
|
||||||
player.addListener(listener)
|
player.addListener(listener)
|
||||||
@ -227,6 +216,14 @@ class PlaybackService :
|
|||||||
actualBackend = newBackend
|
actualBackend = newBackend
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun createNewBackend(newBackend: MediaPlayerManager.PlayerBackend): Player {
|
||||||
|
return if (newBackend == MediaPlayerManager.PlayerBackend.JUKEBOX) {
|
||||||
|
getJukeboxPlayer()
|
||||||
|
} else {
|
||||||
|
getLocalPlayer()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun getJukeboxPlayer(): Player {
|
private fun getJukeboxPlayer(): Player {
|
||||||
return JukeboxMediaPlayer()
|
return JukeboxMediaPlayer()
|
||||||
}
|
}
|
||||||
|
@ -206,6 +206,8 @@ class JukeboxMediaPlayer : JukeboxUnimplementedFunctions(), Player {
|
|||||||
Player.COMMAND_CHANGE_MEDIA_ITEMS,
|
Player.COMMAND_CHANGE_MEDIA_ITEMS,
|
||||||
Player.COMMAND_GET_TIMELINE,
|
Player.COMMAND_GET_TIMELINE,
|
||||||
Player.COMMAND_GET_DEVICE_VOLUME,
|
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_ADJUST_DEVICE_VOLUME,
|
||||||
Player.COMMAND_SET_DEVICE_VOLUME
|
Player.COMMAND_SET_DEVICE_VOLUME
|
||||||
)
|
)
|
||||||
@ -213,6 +215,7 @@ class JukeboxMediaPlayer : JukeboxUnimplementedFunctions(), Player {
|
|||||||
if (playlist.isNotEmpty()) {
|
if (playlist.isNotEmpty()) {
|
||||||
commandsBuilder.addAll(
|
commandsBuilder.addAll(
|
||||||
Player.COMMAND_GET_CURRENT_MEDIA_ITEM,
|
Player.COMMAND_GET_CURRENT_MEDIA_ITEM,
|
||||||
|
Player.COMMAND_GET_METADATA,
|
||||||
Player.COMMAND_GET_MEDIA_ITEMS_METADATA,
|
Player.COMMAND_GET_MEDIA_ITEMS_METADATA,
|
||||||
Player.COMMAND_PLAY_PAUSE,
|
Player.COMMAND_PLAY_PAUSE,
|
||||||
Player.COMMAND_PREPARE,
|
Player.COMMAND_PREPARE,
|
||||||
@ -284,6 +287,10 @@ class JukeboxMediaPlayer : JukeboxUnimplementedFunctions(), Player {
|
|||||||
override fun setShuffleModeEnabled(shuffleModeEnabled: Boolean) {}
|
override fun setShuffleModeEnabled(shuffleModeEnabled: Boolean) {}
|
||||||
|
|
||||||
override fun setDeviceVolume(volume: Int) {
|
override fun setDeviceVolume(volume: Int) {
|
||||||
|
setDeviceVolume(volume, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setDeviceVolume(volume: Int, flags: Int) {
|
||||||
gain = volume
|
gain = volume
|
||||||
tasks.remove(SetGain::class.java)
|
tasks.remove(SetGain::class.java)
|
||||||
tasks.add(SetGain(floatGain))
|
tasks.add(SetGain(floatGain))
|
||||||
@ -299,17 +306,32 @@ class JukeboxMediaPlayer : JukeboxUnimplementedFunctions(), Player {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("Deprecated in Java")
|
||||||
override fun increaseDeviceVolume() {
|
override fun increaseDeviceVolume() {
|
||||||
|
increaseDeviceVolume(C.VOLUME_FLAG_SHOW_UI)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun increaseDeviceVolume(flags: Int) {
|
||||||
gain = (gain + 1).coerceAtMost(MAX_GAIN)
|
gain = (gain + 1).coerceAtMost(MAX_GAIN)
|
||||||
deviceVolume = gain
|
deviceVolume = gain
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("Deprecated in Java")
|
||||||
override fun decreaseDeviceVolume() {
|
override fun decreaseDeviceVolume() {
|
||||||
|
decreaseDeviceVolume(C.VOLUME_FLAG_SHOW_UI)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun decreaseDeviceVolume(flags: Int) {
|
||||||
gain = (gain - 1).coerceAtLeast(0)
|
gain = (gain - 1).coerceAtLeast(0)
|
||||||
deviceVolume = gain
|
deviceVolume = gain
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("Deprecated in Java")
|
||||||
override fun setDeviceMuted(muted: Boolean) {
|
override fun setDeviceMuted(muted: Boolean) {
|
||||||
|
setDeviceMuted(muted, C.VOLUME_FLAG_SHOW_UI)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setDeviceMuted(muted: Boolean, flags: Int) {
|
||||||
gain = 0
|
gain = 0
|
||||||
deviceVolume = gain
|
deviceVolume = gain
|
||||||
}
|
}
|
||||||
|
@ -67,6 +67,18 @@ abstract class JukeboxUnimplementedFunctions : Player {
|
|||||||
TODO("Not yet implemented")
|
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) {
|
override fun setPlayWhenReady(playWhenReady: Boolean) {
|
||||||
TODO("Not yet implemented")
|
TODO("Not yet implemented")
|
||||||
}
|
}
|
||||||
@ -134,11 +146,6 @@ abstract class JukeboxUnimplementedFunctions : Player {
|
|||||||
override fun setPlaybackSpeed(speed: Float) {
|
override fun setPlaybackSpeed(speed: Float) {
|
||||||
TODO("Not yet implemented")
|
TODO("Not yet implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun stop(reset: Boolean) {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getCurrentTracks(): Tracks {
|
override fun getCurrentTracks(): Tracks {
|
||||||
// TODO Dummy information is returned for now, this seems to work
|
// TODO Dummy information is returned for now, this seems to work
|
||||||
return Tracks.EMPTY
|
return Tracks.EMPTY
|
||||||
|
Loading…
x
Reference in New Issue
Block a user