Meine Antwort ist ein wenig spät, aber ich hoffe, dass es zukünftige Zweifel helfen wird.
In Ihrem Service.java
case MEDIA_ID_ROOT:
for (MediaMetadataCompat track : mMusicProvider.getAllMusics()) {
String mediaId = track.getDescription().getMediaId();
//Artist song
String title = String.valueOf(track.getDescription().getTitle());
//Artist name
String subTitle = String.valueOf(track.getDescription().getSubtitle());
//Artist album
String descriptin = String.valueOf(track.getDescription().getDescription());
//Song duration
Long duration = track.getLong(MediaMetadataCompat.METADATA_KEY_DURATION);
Bundle songDuration = new Bundle();
songDuration.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, duration);
MediaDescriptionCompat desc =
new MediaDescriptionCompat.Builder()
.setMediaId(mediaId)
.setTitle(title)
.setSubtitle(subTitle)
.setDescription(descriptin)
.setExtras(songDuration)
.build();
MediaBrowserCompat.MediaItem songList =
new MediaBrowserCompat.MediaItem(desc,
MediaBrowserCompat.MediaItem.FLAG_PLAYABLE);
mediaItems.add(songList);
}
break;
mMusicProvider ist das Objekt meines Modells
in Ihrem provider.java
// Categorized caches for music track data:
private final LinkedHashMap<String, MediaMetadataCompat> mMusicListById;
public Iterable<MediaMetadataCompat> getAllMusics() {
if (mCurrentState != State.INITIALIZED || mMusicListById.isEmpty()) {
return Collections.emptyList();
}
return mMusicListById.values();
}
Die MediaBrowserCompat.MediaItem kann im Grunde haben MediaId, Titel, Untertitel, Beschreibung, IconBitmap, IconUri, Bundle. In meinem Fall brauchte ich die Dauer des Liedes, deshalb habe ich als Extra in einem Bündel hinzugefügt. Sie können weitere Extras wie Komponist, Jahr, Titelnummer usw. hinzufügen.
Wenn Sie keine zusätzlichen Informationen benötigen, können Sie einfach getdescription() aufrufen.
for (MediaMetadataCompat track : mMusicProvider.getAllMusics()) {
MediaBrowserCompat.MediaItem bItem =
new MediaBrowserCompat.MediaItem(track.getDescription(),
MediaBrowserCompat.MediaItem.FLAG_PLAYABLE);
mediaItems.add(bItem);