私の回答は少し遅れていますが、将来の疑問に役立つことを願っています。あなたの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で
は、あなたの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();
}
MediaBrowserCompat.MediaItemは基本的にMEDIAID、タイトルを持つことができるで私のモデル
の目的であります字幕、説明、IconBitmap、IconUri、バンドル。私の場合は、曲のデュレーションが必要なので、バンドルに余分に追加したのはなぜですか。作曲家、年、トラック番号などの追加項目を追加できます。
追加情報が必要ない場合は、getdescription()を呼び出すことができます。
for (MediaMetadataCompat track : mMusicProvider.getAllMusics()) {
MediaBrowserCompat.MediaItem bItem =
new MediaBrowserCompat.MediaItem(track.getDescription(),
MediaBrowserCompat.MediaItem.FLAG_PLAYABLE);
mediaItems.add(bItem);