Show the song cover as lockscreen wallpaper (#170)
This commit is contained in:
parent
20da9e5df3
commit
a246f1f336
3 changed files with 30 additions and 0 deletions
|
@ -76,6 +76,7 @@ import it.vfsfitvnm.vimusic.utils.forcePlayFromBeginning
|
||||||
import it.vfsfitvnm.vimusic.utils.getEnum
|
import it.vfsfitvnm.vimusic.utils.getEnum
|
||||||
import it.vfsfitvnm.vimusic.utils.intent
|
import it.vfsfitvnm.vimusic.utils.intent
|
||||||
import it.vfsfitvnm.vimusic.utils.isInvincibilityEnabledKey
|
import it.vfsfitvnm.vimusic.utils.isInvincibilityEnabledKey
|
||||||
|
import it.vfsfitvnm.vimusic.utils.isShowingThumbnailInLockscreenKey
|
||||||
import it.vfsfitvnm.vimusic.utils.mediaItems
|
import it.vfsfitvnm.vimusic.utils.mediaItems
|
||||||
import it.vfsfitvnm.vimusic.utils.persistentQueueKey
|
import it.vfsfitvnm.vimusic.utils.persistentQueueKey
|
||||||
import it.vfsfitvnm.vimusic.utils.preferences
|
import it.vfsfitvnm.vimusic.utils.preferences
|
||||||
|
@ -132,6 +133,7 @@ class PlayerService : InvincibleService(), Player.Listener, PlaybackStatsListene
|
||||||
|
|
||||||
private var isVolumeNormalizationEnabled = false
|
private var isVolumeNormalizationEnabled = false
|
||||||
private var isPersistentQueueEnabled = false
|
private var isPersistentQueueEnabled = false
|
||||||
|
private var isShowingThumbnailInLockscreen = true
|
||||||
override var isInvincibilityEnabled = false
|
override var isInvincibilityEnabled = false
|
||||||
|
|
||||||
private val binder = Binder()
|
private val binder = Binder()
|
||||||
|
@ -166,6 +168,7 @@ class PlayerService : InvincibleService(), Player.Listener, PlaybackStatsListene
|
||||||
isPersistentQueueEnabled = preferences.getBoolean(persistentQueueKey, false)
|
isPersistentQueueEnabled = preferences.getBoolean(persistentQueueKey, false)
|
||||||
isVolumeNormalizationEnabled = preferences.getBoolean(volumeNormalizationKey, false)
|
isVolumeNormalizationEnabled = preferences.getBoolean(volumeNormalizationKey, false)
|
||||||
isInvincibilityEnabled = preferences.getBoolean(isInvincibilityEnabledKey, false)
|
isInvincibilityEnabled = preferences.getBoolean(isInvincibilityEnabledKey, false)
|
||||||
|
isShowingThumbnailInLockscreen = preferences.getBoolean(isShowingThumbnailInLockscreenKey, true)
|
||||||
|
|
||||||
val cacheEvictor = when (val size =
|
val cacheEvictor = when (val size =
|
||||||
preferences.getEnum(exoPlayerDiskCacheMaxSizeKey, ExoPlayerDiskCacheMaxSize.`2GB`)) {
|
preferences.getEnum(exoPlayerDiskCacheMaxSizeKey, ExoPlayerDiskCacheMaxSize.`2GB`)) {
|
||||||
|
@ -354,6 +357,12 @@ class PlayerService : InvincibleService(), Player.Listener, PlaybackStatsListene
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun maybeShowSongCoverInLockScreen() {
|
||||||
|
val bitmap = if (isShowingThumbnailInLockscreen) bitmapProvider.bitmap else null
|
||||||
|
metadataBuilder.putBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART, bitmap)
|
||||||
|
mediaSession.setMetadata(metadataBuilder.build())
|
||||||
|
}
|
||||||
|
|
||||||
private val Player.androidPlaybackState: Int
|
private val Player.androidPlaybackState: Int
|
||||||
get() = when (playbackState) {
|
get() = when (playbackState) {
|
||||||
Player.STATE_BUFFERING -> if (playWhenReady) PlaybackState.STATE_BUFFERING else PlaybackState.STATE_PAUSED
|
Player.STATE_BUFFERING -> if (playWhenReady) PlaybackState.STATE_BUFFERING else PlaybackState.STATE_PAUSED
|
||||||
|
@ -436,6 +445,10 @@ class PlayerService : InvincibleService(), Player.Listener, PlaybackStatsListene
|
||||||
isInvincibilityEnabledKey -> isInvincibilityEnabled =
|
isInvincibilityEnabledKey -> isInvincibilityEnabled =
|
||||||
sharedPreferences.getBoolean(key, isInvincibilityEnabled)
|
sharedPreferences.getBoolean(key, isInvincibilityEnabled)
|
||||||
skipSilenceKey -> player.skipSilenceEnabled = sharedPreferences.getBoolean(key, false)
|
skipSilenceKey -> player.skipSilenceEnabled = sharedPreferences.getBoolean(key, false)
|
||||||
|
isShowingThumbnailInLockscreenKey -> {
|
||||||
|
isShowingThumbnailInLockscreen = sharedPreferences.getBoolean(key, true)
|
||||||
|
maybeShowSongCoverInLockScreen()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -486,6 +499,7 @@ class PlayerService : InvincibleService(), Player.Listener, PlaybackStatsListene
|
||||||
.addAction(R.drawable.play_skip_forward, "Skip forward", nextIntent)
|
.addAction(R.drawable.play_skip_forward, "Skip forward", nextIntent)
|
||||||
|
|
||||||
bitmapProvider.load(mediaMetadata.artworkUri) { bitmap ->
|
bitmapProvider.load(mediaMetadata.artworkUri) { bitmap ->
|
||||||
|
maybeShowSongCoverInLockScreen()
|
||||||
notificationManager?.notify(NotificationId, builder.setLargeIcon(bitmap).build())
|
notificationManager?.notify(NotificationId, builder.setLargeIcon(bitmap).build())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,11 @@ import it.vfsfitvnm.vimusic.ui.components.TopAppBar
|
||||||
import it.vfsfitvnm.vimusic.ui.screens.EnumValueSelectorSettingsEntry
|
import it.vfsfitvnm.vimusic.ui.screens.EnumValueSelectorSettingsEntry
|
||||||
import it.vfsfitvnm.vimusic.ui.screens.SettingsEntryGroupText
|
import it.vfsfitvnm.vimusic.ui.screens.SettingsEntryGroupText
|
||||||
import it.vfsfitvnm.vimusic.ui.screens.SettingsTitle
|
import it.vfsfitvnm.vimusic.ui.screens.SettingsTitle
|
||||||
|
import it.vfsfitvnm.vimusic.ui.screens.SwitchSettingEntry
|
||||||
import it.vfsfitvnm.vimusic.ui.screens.globalRoutes
|
import it.vfsfitvnm.vimusic.ui.screens.globalRoutes
|
||||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||||
import it.vfsfitvnm.vimusic.utils.colorPaletteModeKey
|
import it.vfsfitvnm.vimusic.utils.colorPaletteModeKey
|
||||||
|
import it.vfsfitvnm.vimusic.utils.isShowingThumbnailInLockscreenKey
|
||||||
import it.vfsfitvnm.vimusic.utils.rememberPreference
|
import it.vfsfitvnm.vimusic.utils.rememberPreference
|
||||||
import it.vfsfitvnm.vimusic.utils.thumbnailRoundnessKey
|
import it.vfsfitvnm.vimusic.utils.thumbnailRoundnessKey
|
||||||
|
|
||||||
|
@ -48,6 +50,10 @@ fun AppearanceSettingsScreen() {
|
||||||
thumbnailRoundnessKey,
|
thumbnailRoundnessKey,
|
||||||
ThumbnailRoundness.Light
|
ThumbnailRoundness.Light
|
||||||
)
|
)
|
||||||
|
var isShowingThumbnailInLockscreen by rememberPreference(
|
||||||
|
isShowingThumbnailInLockscreenKey,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
@ -92,6 +98,15 @@ fun AppearanceSettingsScreen() {
|
||||||
thumbnailRoundness = it
|
thumbnailRoundness = it
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
SettingsEntryGroupText(title = "LOCKSCREEN")
|
||||||
|
|
||||||
|
SwitchSettingEntry(
|
||||||
|
title = "Show song cover",
|
||||||
|
text = "Use the playing song cover as the lockscreen wallpaper",
|
||||||
|
isChecked = isShowingThumbnailInLockscreen,
|
||||||
|
onCheckedChange = { isShowingThumbnailInLockscreen = it }
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ const val skipSilenceKey = "skipSilence"
|
||||||
const val volumeNormalizationKey = "volumeNormalization"
|
const val volumeNormalizationKey = "volumeNormalization"
|
||||||
const val persistentQueueKey = "persistentQueue"
|
const val persistentQueueKey = "persistentQueue"
|
||||||
const val isShowingSynchronizedLyricsKey = "isShowingSynchronizedLyrics"
|
const val isShowingSynchronizedLyricsKey = "isShowingSynchronizedLyrics"
|
||||||
|
const val isShowingThumbnailInLockscreenKey = "isShowingThumbnailInLockscreen"
|
||||||
|
|
||||||
inline fun <reified T : Enum<T>> SharedPreferences.getEnum(
|
inline fun <reified T : Enum<T>> SharedPreferences.getEnum(
|
||||||
key: String,
|
key: String,
|
||||||
|
|
Loading…
Reference in a new issue