diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/service/PlayerService.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/service/PlayerService.kt index 19df58c..020dd29 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/service/PlayerService.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/service/PlayerService.kt @@ -76,6 +76,7 @@ import it.vfsfitvnm.vimusic.utils.forcePlayFromBeginning import it.vfsfitvnm.vimusic.utils.getEnum import it.vfsfitvnm.vimusic.utils.intent import it.vfsfitvnm.vimusic.utils.isInvincibilityEnabledKey +import it.vfsfitvnm.vimusic.utils.isShowingThumbnailInLockscreenKey import it.vfsfitvnm.vimusic.utils.mediaItems import it.vfsfitvnm.vimusic.utils.persistentQueueKey import it.vfsfitvnm.vimusic.utils.preferences @@ -132,6 +133,7 @@ class PlayerService : InvincibleService(), Player.Listener, PlaybackStatsListene private var isVolumeNormalizationEnabled = false private var isPersistentQueueEnabled = false + private var isShowingThumbnailInLockscreen = true override var isInvincibilityEnabled = false private val binder = Binder() @@ -166,6 +168,7 @@ class PlayerService : InvincibleService(), Player.Listener, PlaybackStatsListene isPersistentQueueEnabled = preferences.getBoolean(persistentQueueKey, false) isVolumeNormalizationEnabled = preferences.getBoolean(volumeNormalizationKey, false) isInvincibilityEnabled = preferences.getBoolean(isInvincibilityEnabledKey, false) + isShowingThumbnailInLockscreen = preferences.getBoolean(isShowingThumbnailInLockscreenKey, true) val cacheEvictor = when (val size = 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 get() = when (playbackState) { Player.STATE_BUFFERING -> if (playWhenReady) PlaybackState.STATE_BUFFERING else PlaybackState.STATE_PAUSED @@ -436,6 +445,10 @@ class PlayerService : InvincibleService(), Player.Listener, PlaybackStatsListene isInvincibilityEnabledKey -> isInvincibilityEnabled = sharedPreferences.getBoolean(key, isInvincibilityEnabled) 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) bitmapProvider.load(mediaMetadata.artworkUri) { bitmap -> + maybeShowSongCoverInLockScreen() notificationManager?.notify(NotificationId, builder.setLargeIcon(bitmap).build()) } diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/settings/AppearanceSettingsScreen.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/settings/AppearanceSettingsScreen.kt index 39f317b..138cd90 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/settings/AppearanceSettingsScreen.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/settings/AppearanceSettingsScreen.kt @@ -26,9 +26,11 @@ import it.vfsfitvnm.vimusic.ui.components.TopAppBar import it.vfsfitvnm.vimusic.ui.screens.EnumValueSelectorSettingsEntry import it.vfsfitvnm.vimusic.ui.screens.SettingsEntryGroupText 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.styling.LocalAppearance import it.vfsfitvnm.vimusic.utils.colorPaletteModeKey +import it.vfsfitvnm.vimusic.utils.isShowingThumbnailInLockscreenKey import it.vfsfitvnm.vimusic.utils.rememberPreference import it.vfsfitvnm.vimusic.utils.thumbnailRoundnessKey @@ -48,6 +50,10 @@ fun AppearanceSettingsScreen() { thumbnailRoundnessKey, ThumbnailRoundness.Light ) + var isShowingThumbnailInLockscreen by rememberPreference( + isShowingThumbnailInLockscreenKey, + true + ) Column( modifier = Modifier @@ -92,6 +98,15 @@ fun AppearanceSettingsScreen() { 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 } + ) } } } diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/Preferences.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/Preferences.kt index 4d3f37a..e231b46 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/Preferences.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/Preferences.kt @@ -27,6 +27,7 @@ const val skipSilenceKey = "skipSilence" const val volumeNormalizationKey = "volumeNormalization" const val persistentQueueKey = "persistentQueue" const val isShowingSynchronizedLyricsKey = "isShowingSynchronizedLyrics" +const val isShowingThumbnailInLockscreenKey = "isShowingThumbnailInLockscreen" inline fun > SharedPreferences.getEnum( key: String,