2017-05-28 8 views
0

私は、公式ドキュメントを読んでいるが、私はこの方法で行うのですかを理解することはできません:/「メディアアイテムを構築する方法をメディアアイテムを作成するには?アンドロイド

@Override 
public void onLoadChildren(final String parentMediaId, 
final Result<List<MediaItem>> result) { 

... 
// Assume for example that the music catalog is already loaded/cached. 

List<MediaItem> mediaItems = new ArrayList<>(); 

// Check if this is the root menu: 
if (MY_MEDIA_ROOT_ID.equals(parentMediaId)) { 

    // build the MediaItem objects for the top level, 
    // and put them in the mediaItems list 

    where is documented this part? how to build the media item? 

} else { 

    // examine the passed parentMediaId to see which submenu we're at, 
    // and put the children of that menu in the mediaItems list 
} 
... 
} 

も、私は電話で音楽を再生したい場合は、 電話の音楽に基づいていますか?

答えて

1

私の回答は少し遅れていますが、将来の疑問に役立つことを願っています。あなたの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); 
関連する問題