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.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.graphics.Bitmap import android.graphics.Bitmap
import android.os.Bundle
import android.support.v4.media.MediaDescriptionCompat import android.support.v4.media.MediaDescriptionCompat
import android.support.v4.media.MediaMetadataCompat import android.support.v4.media.MediaMetadataCompat
import android.support.v4.media.session.MediaSessionCompat import android.support.v4.media.session.MediaSessionCompat
@ -303,6 +304,7 @@ private constructor(
// MediaStore URI instead of loading a bitmap. // MediaStore URI instead of loading a bitmap.
.setIconUri(song.album.cover.single.mediaStoreCoverUri) .setIconUri(song.album.cover.single.mediaStoreCoverUri)
.setMediaUri(song.uri) .setMediaUri(song.uri)
.setExtras(Bundle().apply { putInt(MediaSessionInterface.KEY_QUEUE_POS, i) })
.build() .build()
// Store the item index so we can then use the analogous index in the // Store the item index so we can then use the analogous index in the
// playback state. // 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.MediaSessionCompat
import android.support.v4.media.session.PlaybackStateCompat import android.support.v4.media.session.PlaybackStateCompat
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import org.oxycblt.auxio.BuildConfig
import javax.inject.Inject import javax.inject.Inject
import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Album
import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Artist
@ -99,19 +100,8 @@ constructor(
override fun onRemoveQueueItem(description: MediaDescriptionCompat) { override fun onRemoveQueueItem(description: MediaDescriptionCompat) {
super.onRemoveQueueItem(description) super.onRemoveQueueItem(description)
val deviceLibrary = musicRepository.deviceLibrary ?: return val at = description.extras?.getInt(KEY_QUEUE_POS) ?: return
val uid = MediaSessionUID.fromString(description.mediaId ?: return) ?: return playbackManager.removeQueueItem(at)
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)
}
} }
override fun onPlay() { override fun onPlay() {
@ -210,6 +200,7 @@ constructor(
} }
companion object { companion object {
const val KEY_QUEUE_POS = BuildConfig.APPLICATION_ID + ".metadata.QUEUE_POS"
const val ACTIONS = const val ACTIONS =
PlaybackStateCompat.ACTION_PLAY_FROM_MEDIA_ID or PlaybackStateCompat.ACTION_PLAY_FROM_MEDIA_ID or
PlaybackStateCompat.ACTION_PLAY or PlaybackStateCompat.ACTION_PLAY or