playback: remove specific queue item in android auto

This commit is contained in:
Alexander Capehart 2024-08-28 13:31:29 -06:00
parent 3dea060a28
commit ba5bccaa37
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
2 changed files with 6 additions and 13 deletions

View file

@ -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.

View file

@ -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