From 4ce212a6e68238375abdde912acd830bdbbfd5f9 Mon Sep 17 00:00:00 2001 From: michaellee123 Date: Mon, 26 Dec 2022 15:34:55 +0800 Subject: [PATCH 1/3] Fixed album art image is not clear enough and always shows the previous song's cover in Android 13 (test device: Sony Xperia 1 IV) --- .../name/monkey/retromusic/service/MusicService.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt index 3ddd8c086..93b203de6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt @@ -23,6 +23,7 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener import android.content.pm.ServiceInfo import android.database.ContentObserver import android.graphics.Bitmap +import android.graphics.BitmapFactory import android.graphics.drawable.Drawable import android.media.AudioManager import android.os.* @@ -1021,7 +1022,7 @@ class MusicService : MediaBrowserServiceCompat(), .putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, null) .putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, playingQueue.size.toLong()) - if (isAlbumArtOnLockScreen) { + if (isAlbumArtOnLockScreen || VERSION.SDK_INT == 33) { // val screenSize: Point = RetroUtil.getScreenSize(this) val request = GlideApp.with(this) .asBitmap() @@ -1036,6 +1037,13 @@ class MusicService : MediaBrowserServiceCompat(), CustomTarget(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) { override fun onLoadFailed(errorDrawable: Drawable?) { super.onLoadFailed(errorDrawable) + metaData.putBitmap( + MediaMetadataCompat.METADATA_KEY_ALBUM_ART, + BitmapFactory.decodeResource( + resources, + R.drawable.default_audio_art + ) + ) mediaSession?.setMetadata(metaData.build()) onCompletion() } From 94bc86b5d427b1ca7b9054856de8cd3d3c72d785 Mon Sep 17 00:00:00 2001 From: michaellee123 Date: Tue, 27 Dec 2022 21:52:10 +0800 Subject: [PATCH 2/3] 1. Fixed album art image is not clear enough and always shows the previous song's cover; 2. Change Setting -> Personalize -> LOCKSCREEN (Show album cover, Blur album cover, Fullscreen controls) only about lockscreen, without change notification style anymore; 3. Lockscreen adapt landscape mode; 4. Move lockscreen image to the top, keep looks like player's style; 5. Change some defStyleAttr default value frome -1 to 0, to make Android Studio to preview; 6. Fitting more pages can display circular buttons. --- .../activities/LockScreenActivity.kt | 22 +++- .../base/AbsPlayerControlsFragment.kt | 5 + .../monkey/retromusic/service/MusicService.kt | 17 +-- .../retromusic/views/HeightFitSquareLayout.kt | 2 +- .../monkey/retromusic/views/StatusBarView.kt | 2 +- .../res/layout-land/activity_lock_screen.xml | 90 ++++++++++++++ .../main/res/layout/activity_lock_screen.xml | 110 ++++++++++-------- 7 files changed, 182 insertions(+), 66 deletions(-) create mode 100644 app/src/main/res/layout-land/activity_lock_screen.xml diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt index b4e86ab87..626576a8d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt @@ -26,10 +26,13 @@ import code.name.monkey.retromusic.extensions.hideStatusBar import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto import code.name.monkey.retromusic.extensions.whichFragment import code.name.monkey.retromusic.fragments.player.lockscreen.LockScreenControlsFragment +import code.name.monkey.retromusic.glide.BlurTransformation import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.glide.RetroGlideExtension import code.name.monkey.retromusic.glide.RetroMusicColoredTarget import code.name.monkey.retromusic.helper.MusicPlayerRemote +import code.name.monkey.retromusic.util.PreferenceUtil +import code.name.monkey.retromusic.util.PreferenceUtil.isAlbumArtOnLockScreen import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import com.r0adkll.slidr.Slidr import com.r0adkll.slidr.model.SlidrConfig @@ -88,7 +91,7 @@ class LockScreenActivity : AbsMusicServiceActivity() { } else { window.addFlags( WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED - // or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON + // or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON ) } } @@ -104,16 +107,31 @@ class LockScreenActivity : AbsMusicServiceActivity() { } private fun updateSongs() { + if (!isAlbumArtOnLockScreen) { + binding.image.setImageResource(R.drawable.default_audio_art) + return + } + val song = MusicPlayerRemote.currentSong + GlideApp.with(this) .asBitmapPalette() .songCoverOptions(song) .load(RetroGlideExtension.getSongModel(song)) - .dontAnimate() + .transition(RetroGlideExtension.getDefaultTransition()) .into(object : RetroMusicColoredTarget(binding.image) { override fun onColorReady(colors: MediaNotificationProcessor) { fragment?.setColor(colors) } }) + + if (PreferenceUtil.isBlurredAlbumArt) { + GlideApp.with(this) + .load(RetroGlideExtension.getSongModel(song)) + .transition(RetroGlideExtension.getDefaultTransition()) + .transform(BlurTransformation.Builder(this).blurRadius(25f).build()) + .into(binding.ivBlurredAlbumArt) + } + } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt index 78659cd50..52a0b124c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt @@ -155,6 +155,11 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) + if (PreferenceUtil.circlePlayButton) { + requireContext().theme.applyStyle(R.style.CircleFABOverlay, true) + } else { + requireContext().theme.applyStyle(R.style.RoundedFABOverlay, true) + } } fun View.showBounceAnimation() { diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt index 93b203de6..64598151b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt @@ -70,7 +70,6 @@ import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.MusicUtil.toggleFavorite import code.name.monkey.retromusic.util.PackageValidator import code.name.monkey.retromusic.util.PreferenceUtil.crossFadeDuration -import code.name.monkey.retromusic.util.PreferenceUtil.isAlbumArtOnLockScreen import code.name.monkey.retromusic.util.PreferenceUtil.isBluetoothSpeaker import code.name.monkey.retromusic.util.PreferenceUtil.isBlurredAlbumArt import code.name.monkey.retromusic.util.PreferenceUtil.isClassicNotification @@ -1022,19 +1021,13 @@ class MusicService : MediaBrowserServiceCompat(), .putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, null) .putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, playingQueue.size.toLong()) - if (isAlbumArtOnLockScreen || VERSION.SDK_INT == 33) { - // val screenSize: Point = RetroUtil.getScreenSize(this) - val request = GlideApp.with(this) + // there only about notification's album art, so remove "isAlbumArtOnLockScreen" and "isBlurredAlbumArt" + GlideApp.with(this) .asBitmap() .songCoverOptions(song) .load(getSongModel(song)) .transition(getDefaultTransition()) - - if (isBlurredAlbumArt) { - request.transform(BlurTransformation.Builder(this@MusicService).build()) - } - request.into(object : - CustomTarget(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) { + .into(object : CustomTarget(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) { override fun onLoadFailed(errorDrawable: Drawable?) { super.onLoadFailed(errorDrawable) metaData.putBitmap( @@ -1062,10 +1055,6 @@ class MusicService : MediaBrowserServiceCompat(), override fun onLoadCleared(placeholder: Drawable?) {} }) - } else { - mediaSession?.setMetadata(metaData.build()) - onCompletion() - } } private fun handleChangeInternal(what: String) { diff --git a/app/src/main/java/code/name/monkey/retromusic/views/HeightFitSquareLayout.kt b/app/src/main/java/code/name/monkey/retromusic/views/HeightFitSquareLayout.kt index 3653fddd6..8ac6172bb 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/HeightFitSquareLayout.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/HeightFitSquareLayout.kt @@ -20,7 +20,7 @@ import android.widget.FrameLayout class HeightFitSquareLayout @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, - defStyleAttr: Int = -1 + defStyleAttr: Int = 0 ) : FrameLayout(context, attrs, defStyleAttr){ private var forceSquare = true diff --git a/app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.kt b/app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.kt index d1979f12f..4fe57cf30 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.kt @@ -21,7 +21,7 @@ import android.view.View class StatusBarView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, - defStyleAttr: Int = -1 + defStyleAttr: Int = 0 ) : View(context, attrs, defStyleAttr) { override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { diff --git a/app/src/main/res/layout-land/activity_lock_screen.xml b/app/src/main/res/layout-land/activity_lock_screen.xml new file mode 100644 index 000000000..b36873a8c --- /dev/null +++ b/app/src/main/res/layout-land/activity_lock_screen.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_lock_screen.xml b/app/src/main/res/layout/activity_lock_screen.xml index 1b6165daa..faf44a477 100644 --- a/app/src/main/res/layout/activity_lock_screen.xml +++ b/app/src/main/res/layout/activity_lock_screen.xml @@ -1,63 +1,77 @@ - + android:layout_height="match_parent"> - - - - + android:layout_height="match_parent" + android:scaleType="centerCrop" /> + android:paddingTop="24dp"> - + + + + + + + + + + + + + android:layout_weight="1" + android:gravity="center_vertical" + android:orientation="vertical" + tools:ignore="UselessParent"> + + + + + - - - - - - - - - \ No newline at end of file + From 533c5c148946318c6744fc054b2a0b8c101d76e5 Mon Sep 17 00:00:00 2001 From: Prathamesh More Date: Mon, 6 Mar 2023 18:18:35 +0530 Subject: [PATCH 3/3] Revert some changes in LockScreenActivity and MusicService --- .../activities/LockScreenActivity.kt | 22 ++----------------- .../monkey/retromusic/service/MusicService.kt | 19 +++++++++++----- .../monkey/retromusic/util/PreferenceUtil.kt | 2 +- 3 files changed, 17 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt index 626576a8d..b4e86ab87 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/LockScreenActivity.kt @@ -26,13 +26,10 @@ import code.name.monkey.retromusic.extensions.hideStatusBar import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto import code.name.monkey.retromusic.extensions.whichFragment import code.name.monkey.retromusic.fragments.player.lockscreen.LockScreenControlsFragment -import code.name.monkey.retromusic.glide.BlurTransformation import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.glide.RetroGlideExtension import code.name.monkey.retromusic.glide.RetroMusicColoredTarget import code.name.monkey.retromusic.helper.MusicPlayerRemote -import code.name.monkey.retromusic.util.PreferenceUtil -import code.name.monkey.retromusic.util.PreferenceUtil.isAlbumArtOnLockScreen import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import com.r0adkll.slidr.Slidr import com.r0adkll.slidr.model.SlidrConfig @@ -91,7 +88,7 @@ class LockScreenActivity : AbsMusicServiceActivity() { } else { window.addFlags( WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED - // or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON + // or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON ) } } @@ -107,31 +104,16 @@ class LockScreenActivity : AbsMusicServiceActivity() { } private fun updateSongs() { - if (!isAlbumArtOnLockScreen) { - binding.image.setImageResource(R.drawable.default_audio_art) - return - } - val song = MusicPlayerRemote.currentSong - GlideApp.with(this) .asBitmapPalette() .songCoverOptions(song) .load(RetroGlideExtension.getSongModel(song)) - .transition(RetroGlideExtension.getDefaultTransition()) + .dontAnimate() .into(object : RetroMusicColoredTarget(binding.image) { override fun onColorReady(colors: MediaNotificationProcessor) { fragment?.setColor(colors) } }) - - if (PreferenceUtil.isBlurredAlbumArt) { - GlideApp.with(this) - .load(RetroGlideExtension.getSongModel(song)) - .transition(RetroGlideExtension.getDefaultTransition()) - .transform(BlurTransformation.Builder(this).blurRadius(25f).build()) - .into(binding.ivBlurredAlbumArt) - } - } } diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt index 64598151b..40c725610 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt @@ -52,7 +52,6 @@ import code.name.monkey.retromusic.extensions.toMediaSessionQueue import code.name.monkey.retromusic.extensions.uri import code.name.monkey.retromusic.glide.BlurTransformation import code.name.monkey.retromusic.glide.GlideApp -import code.name.monkey.retromusic.glide.RetroGlideExtension.getDefaultTransition import code.name.monkey.retromusic.glide.RetroGlideExtension.getSongModel import code.name.monkey.retromusic.helper.ShuffleHelper.makeShuffleList import code.name.monkey.retromusic.model.Song @@ -70,6 +69,7 @@ import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.MusicUtil.toggleFavorite import code.name.monkey.retromusic.util.PackageValidator import code.name.monkey.retromusic.util.PreferenceUtil.crossFadeDuration +import code.name.monkey.retromusic.util.PreferenceUtil.isAlbumArtOnLockScreen import code.name.monkey.retromusic.util.PreferenceUtil.isBluetoothSpeaker import code.name.monkey.retromusic.util.PreferenceUtil.isBlurredAlbumArt import code.name.monkey.retromusic.util.PreferenceUtil.isClassicNotification @@ -1021,13 +1021,18 @@ class MusicService : MediaBrowserServiceCompat(), .putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, null) .putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, playingQueue.size.toLong()) - // there only about notification's album art, so remove "isAlbumArtOnLockScreen" and "isBlurredAlbumArt" - GlideApp.with(this) + if (isAlbumArtOnLockScreen) { + // val screenSize: Point = RetroUtil.getScreenSize(this) + val request = GlideApp.with(this) .asBitmap() .songCoverOptions(song) .load(getSongModel(song)) - .transition(getDefaultTransition()) - .into(object : CustomTarget(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) { + + if (isBlurredAlbumArt) { + request.transform(BlurTransformation.Builder(this@MusicService).build()) + } + request.into(object : + CustomTarget(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) { override fun onLoadFailed(errorDrawable: Drawable?) { super.onLoadFailed(errorDrawable) metaData.putBitmap( @@ -1055,6 +1060,10 @@ class MusicService : MediaBrowserServiceCompat(), override fun onLoadCleared(placeholder: Drawable?) {} }) + } else { + mediaSession?.setMetadata(metaData.build()) + onCompletion() + } } private fun handleChangeInternal(what: String) { diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt index 2198d08ff..493949be7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt @@ -263,7 +263,7 @@ object PreferenceUtil { val isAlbumArtOnLockScreen get() = sharedPreferences.getBoolean( - ALBUM_ART_ON_LOCK_SCREEN, false + ALBUM_ART_ON_LOCK_SCREEN, true ) val isAudioDucking