Fixing incorrect song data in notification

This commit is contained in:
Prathamesh More 2022-04-19 18:29:15 +05:30
parent 4563378505
commit 098f9f939d
2 changed files with 18 additions and 30 deletions

View file

@ -13,6 +13,7 @@
*/ */
package code.name.monkey.retromusic.service package code.name.monkey.retromusic.service
import android.annotation.SuppressLint
import android.app.NotificationManager import android.app.NotificationManager
import android.appwidget.AppWidgetManager import android.appwidget.AppWidgetManager
import android.bluetooth.BluetoothDevice import android.bluetooth.BluetoothDevice
@ -88,10 +89,10 @@ import code.name.monkey.retromusic.util.PreferenceUtil.isPauseOnZeroVolume
import code.name.monkey.retromusic.util.PreferenceUtil.playbackSpeed import code.name.monkey.retromusic.util.PreferenceUtil.playbackSpeed
import code.name.monkey.retromusic.util.PreferenceUtil.registerOnSharedPreferenceChangedListener import code.name.monkey.retromusic.util.PreferenceUtil.registerOnSharedPreferenceChangedListener
import code.name.monkey.retromusic.util.PreferenceUtil.unregisterOnSharedPreferenceChangedListener import code.name.monkey.retromusic.util.PreferenceUtil.unregisterOnSharedPreferenceChangedListener
import code.name.monkey.retromusic.util.RetroUtil
import code.name.monkey.retromusic.volume.AudioVolumeObserver import code.name.monkey.retromusic.volume.AudioVolumeObserver
import code.name.monkey.retromusic.volume.OnAudioVolumeChangedListener import code.name.monkey.retromusic.volume.OnAudioVolumeChangedListener
import com.bumptech.glide.request.target.SimpleTarget import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.target.Target
import com.bumptech.glide.request.transition.Transition import com.bumptech.glide.request.transition.Transition
import org.koin.java.KoinJavaComponent.get import org.koin.java.KoinJavaComponent.get
import java.util.* import java.util.*
@ -251,7 +252,6 @@ class MusicService : MediaBrowserServiceCompat(),
play() play()
TelephonyManager.CALL_STATE_RINGING, TelephonyManager.CALL_STATE_OFFHOOK -> // A call is dialing, active or on hold TelephonyManager.CALL_STATE_RINGING, TelephonyManager.CALL_STATE_OFFHOOK -> // A call is dialing, active or on hold
pause() pause()
else -> {}
} }
super.onCallStateChanged(state, incomingNumber) super.onCallStateChanged(state, incomingNumber)
} }
@ -1122,6 +1122,7 @@ class MusicService : MediaBrowserServiceCompat(),
} }
} }
@SuppressLint("CheckResult")
fun updateMediaSessionMetaData() { fun updateMediaSessionMetaData() {
Log.i(TAG, "onResourceReady: ") Log.i(TAG, "onResourceReady: ")
val song = currentSong val song = currentSong
@ -1141,7 +1142,6 @@ class MusicService : MediaBrowserServiceCompat(),
.putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, playingQueue.size.toLong()) .putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, playingQueue.size.toLong())
if (isAlbumArtOnLockScreen) { if (isAlbumArtOnLockScreen) {
val screenSize = RetroUtil.getScreenSize(this@MusicService)
val request = GlideApp.with(this@MusicService) val request = GlideApp.with(this@MusicService)
.asBitmap() .asBitmap()
.songCoverOptions(song) .songCoverOptions(song)
@ -1150,7 +1150,8 @@ class MusicService : MediaBrowserServiceCompat(),
request.transform(BlurTransformation.Builder(this@MusicService).build()) request.transform(BlurTransformation.Builder(this@MusicService).build())
} }
runOnUiThread { runOnUiThread {
request.into(object : SimpleTarget<Bitmap?>(screenSize.x, screenSize.y) { request.into(object :
CustomTarget<Bitmap?>(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) {
override fun onLoadFailed(errorDrawable: Drawable?) { override fun onLoadFailed(errorDrawable: Drawable?) {
super.onLoadFailed(errorDrawable) super.onLoadFailed(errorDrawable)
mediaSession?.setMetadata(metaData.build()) mediaSession?.setMetadata(metaData.build())
@ -1166,6 +1167,10 @@ class MusicService : MediaBrowserServiceCompat(),
) )
mediaSession?.setMetadata(metaData.build()) mediaSession?.setMetadata(metaData.build())
} }
override fun onLoadCleared(placeholder: Drawable?) {
mediaSession?.setMetadata(metaData.build())
}
}) })
} }
} else { } else {
@ -1280,13 +1285,7 @@ class MusicService : MediaBrowserServiceCompat(),
private fun openCurrent(): Boolean { private fun openCurrent(): Boolean {
return try { return try {
if (playback != null) { if (playback != null) {
return playback!!.setDataSource( return playback!!.setDataSource(getTrackUri(currentSong))
getTrackUri(
Objects.requireNonNull(
currentSong
)
)
)
} else false } else false
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()

View file

@ -20,10 +20,9 @@ import android.app.PendingIntent
import android.content.ComponentName import android.content.ComponentName
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.graphics.Bitmap
import android.graphics.BitmapFactory import android.graphics.BitmapFactory
import android.graphics.Color
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.os.Build
import android.support.v4.media.session.MediaSessionCompat import android.support.v4.media.session.MediaSessionCompat
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.core.text.parseAsHtml import androidx.core.text.parseAsHtml
@ -33,7 +32,6 @@ import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.MainActivity import code.name.monkey.retromusic.activities.MainActivity
import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.glide.GlideApp
import code.name.monkey.retromusic.glide.RetroGlideExtension import code.name.monkey.retromusic.glide.RetroGlideExtension
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.service.MusicService
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_QUIT import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_QUIT
@ -43,7 +41,6 @@ import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_TOGGLE_
import code.name.monkey.retromusic.service.MusicService.Companion.TOGGLE_FAVORITE import code.name.monkey.retromusic.service.MusicService.Companion.TOGGLE_FAVORITE
import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.RetroColorUtil
import com.bumptech.glide.request.target.CustomTarget import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.transition.Transition import com.bumptech.glide.request.transition.Transition
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@ -125,26 +122,18 @@ class PlayingNotificationImpl24(
setSubText(("<b>" + song.albumName + "</b>").parseAsHtml()) setSubText(("<b>" + song.albumName + "</b>").parseAsHtml())
val bigNotificationImageSize = context.resources val bigNotificationImageSize = context.resources
.getDimensionPixelSize(R.dimen.notification_big_image_size) .getDimensionPixelSize(R.dimen.notification_big_image_size)
GlideApp.with(context).asBitmapPalette().songCoverOptions(song) GlideApp.with(context)
.asBitmap()
.songCoverOptions(song)
.load(RetroGlideExtension.getSongModel(song)) .load(RetroGlideExtension.getSongModel(song))
//.checkIgnoreMediaStore() //.checkIgnoreMediaStore()
.centerCrop() .centerCrop()
.into(object : CustomTarget<BitmapPaletteWrapper>( .into(object : CustomTarget<Bitmap>(
bigNotificationImageSize, bigNotificationImageSize,
bigNotificationImageSize bigNotificationImageSize
) { ) {
override fun onResourceReady( override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
resource: BitmapPaletteWrapper, setLargeIcon(resource)
transition: Transition<in BitmapPaletteWrapper>?
) {
setLargeIcon(
resource.bitmap
)
if (Build.VERSION.SDK_INT <=
Build.VERSION_CODES.O && PreferenceUtil.isColoredNotification
) {
color = RetroColorUtil.getColor(resource.palette, Color.TRANSPARENT)
}
onUpdate() onUpdate()
} }