예제 #1
0
  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]);
  }