diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionHolder.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionHolder.kt index e561b8180..9f301fcd3 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionHolder.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionHolder.kt @@ -21,6 +21,7 @@ package org.oxycblt.auxio.playback.system import android.annotation.SuppressLint import android.content.Context import android.graphics.Bitmap +import android.os.Bundle import android.support.v4.media.MediaDescriptionCompat import android.support.v4.media.MediaMetadataCompat import android.support.v4.media.session.MediaSessionCompat @@ -303,6 +304,7 @@ private constructor( // MediaStore URI instead of loading a bitmap. .setIconUri(song.album.cover.single.mediaStoreCoverUri) .setMediaUri(song.uri) + .setExtras(Bundle().apply { putInt(MediaSessionInterface.KEY_QUEUE_POS, i) }) .build() // Store the item index so we can then use the analogous index in the // playback state. diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionInterface.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionInterface.kt index 6688ed956..25c3078f5 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionInterface.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/MediaSessionInterface.kt @@ -26,6 +26,7 @@ import android.support.v4.media.MediaDescriptionCompat import android.support.v4.media.session.MediaSessionCompat import android.support.v4.media.session.PlaybackStateCompat import dagger.hilt.android.qualifiers.ApplicationContext +import org.oxycblt.auxio.BuildConfig import javax.inject.Inject import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Artist @@ -99,19 +100,8 @@ constructor( override fun onRemoveQueueItem(description: MediaDescriptionCompat) { super.onRemoveQueueItem(description) - val deviceLibrary = musicRepository.deviceLibrary ?: return - val uid = MediaSessionUID.fromString(description.mediaId ?: return) ?: return - val song = - when (uid) { - is MediaSessionUID.SingleItem -> deviceLibrary.findSong(uid.uid) - is MediaSessionUID.ChildItem -> deviceLibrary.findSong(uid.childUid) - else -> null - } - ?: return - val queueIndex = playbackManager.queue.indexOf(song) - if (queueIndex > -1) { - playbackManager.removeQueueItem(queueIndex) - } + val at = description.extras?.getInt(KEY_QUEUE_POS) ?: return + playbackManager.removeQueueItem(at) } override fun onPlay() { @@ -210,6 +200,7 @@ constructor( } companion object { + const val KEY_QUEUE_POS = BuildConfig.APPLICATION_ID + ".metadata.QUEUE_POS" const val ACTIONS = PlaybackStateCompat.ACTION_PLAY_FROM_MEDIA_ID or PlaybackStateCompat.ACTION_PLAY or