Use the artist as the subtitle of the legacy media description

The Bluetooth AVRCP service expects the metadata of the item currently
being played to be in sync with the corresponding media description in
the active item of the queue. The comparison expects the metadata values
of `METADATA_KEY_TITLE` and `METADATA_KEY_ARTIST` [1] to be equal to the
`title` and `subtitle` field of the `MediaDescription` [2] of the
corresponding queue item.

Hence we need to populate the media description accordingly to avoid the
BT service to delay the update for two seconds and log an exception.

[1] https://cs.android.com/android/platform/superproject/+/master:packages/modules/Bluetooth/android/app/src/com/android/bluetooth/audio_util/helpers/Metadata.java;l=120
[2] https://cs.android.com/android/platform/superproject/+/master:packages/modules/Bluetooth/android/app/src/com/android/bluetooth/audio_util/MediaPlayerWrapper.java;l=258

Issue: androidx/media#148
PiperOrigin-RevId: 491877806
(cherry picked from commit 2a07a0b44582782b09a96b5819e9899308e79545)
This commit is contained in:
bachinger 2022-11-30 12:13:28 +00:00 committed by christosts
parent 4ecbd77442
commit 665f04d70a

View File

@ -351,7 +351,9 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
} }
return builder return builder
.setTitle(metadata.title) .setTitle(metadata.title)
.setSubtitle(metadata.subtitle) // The BT AVRPC service expects the subtitle of the media description to be the artist
// (see https://github.com/androidx/media/issues/148).
.setSubtitle(metadata.artist != null ? metadata.artist : metadata.subtitle)
.setDescription(metadata.description) .setDescription(metadata.description)
.setIconUri(metadata.artworkUri) .setIconUri(metadata.artworkUri)
.setMediaUri(item.requestMetadata.mediaUri) .setMediaUri(item.requestMetadata.mediaUri)