2017-05-28 3 views
0

Ich habe die offizielle Dokumentation zu lesen, aber ich kann nicht verstehen, was in dieser Methode tun:Wie erstelle ich ein Medienelement? android

@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 
} 
... 
} 

auch wenn ich die Musik auf dem Handy spielen möchten, , wie man „bauen die Medien-Objekt/s "basierend auf der Musik des Telefons?

Antwort

1

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); 
Verwandte Themen