public static List<MediaSessionCompat.QueueItem> getPlayingQueue( String mediaId, MusicProvider musicProvider) { // extract the browsing hierarchy from the media ID: String[] hierarchy = MediaIDHelper.getHierarchy(mediaId); if (hierarchy.length != 2) { LogUtils.e(TAG, "Could not build a playing queue for this mediaId: ", mediaId); return null; } String categoryType = hierarchy[0]; String categoryValue = hierarchy[1]; LogUtils.d(TAG, "Creating playing queue for ", categoryType, ", ", categoryValue); Iterable<MediaMetadataCompat> tracks = null; // This sample only supports genre and by_search category types. switch (categoryType) { case MEDIA_ID_MUSICS_BY_GENRE: tracks = musicProvider.getMusicsByGenre(categoryValue); break; case MEDIA_ID_MUSICS_BY_SEARCH: tracks = musicProvider.searchMusicBySongTitle(categoryValue); break; case MEDIA_ID_MUSICS_BY_ALBUM: tracks = musicProvider.getMusicsByAlbum(categoryValue); break; case MEDIA_ID_MUSICS_BY_ARTIST: tracks = musicProvider.getMusicsByArtist(categoryValue); break; } if (tracks == null) { LogUtils.e(TAG, "Unrecognized category type: ", categoryType, " for media ", mediaId); return null; } return convertToQueue(tracks, hierarchy[0], hierarchy[1]); }