示例#1
0
 /**
  * @param context
  * @param id
  * @return
  */
 public static long[] getSongListForGenre(Context context, long id) {
   String[] projection = new String[] {BaseColumns._ID};
   StringBuilder selection = new StringBuilder();
   selection.append(AudioColumns.IS_MUSIC + "=1");
   selection.append(" AND " + MediaColumns.TITLE + "!=''");
   Uri uri = Genres.Members.getContentUri(EXTERNAL, id);
   Cursor cursor =
       context.getContentResolver().query(uri, projection, selection.toString(), null, null);
   if (cursor != null) {
     long[] list = getSongListForCursor(cursor);
     cursor.close();
     return list;
   }
   return sEmptyList;
 }
  @Override
  public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    String[] projection =
        new String[] {BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST};
    StringBuilder where = new StringBuilder();
    String sortOrder = Audio.Media.DEFAULT_SORT_ORDER;
    where.append(AudioColumns.IS_MUSIC + "=1").append(" AND " + MediaColumns.TITLE + " != ''");
    Uri uri = Audio.Media.EXTERNAL_CONTENT_URI;
    if (getArguments() != null) {
      mPlaylistId = getArguments().getLong(BaseColumns._ID);
      String mimeType = getArguments().getString(MIME_TYPE);
      if (Audio.Playlists.CONTENT_TYPE.equals(mimeType)) {
        where = new StringBuilder();
        where.append(AudioColumns.IS_MUSIC + "=1");
        where.append(" AND " + MediaColumns.TITLE + " != ''");
        switch ((int) mPlaylistId) {
          case (int) PLAYLIST_QUEUE:
            uri = Audio.Media.EXTERNAL_CONTENT_URI;
            long[] mNowPlaying = MusicUtils.getQueue();
            if (mNowPlaying.length == 0) return null;
            where = new StringBuilder();
            where.append(BaseColumns._ID + " IN (");
            if (mNowPlaying == null || mNowPlaying.length <= 0) return null;
            for (long queue_id : mNowPlaying) {
              where.append(queue_id + ",");
            }
            where.deleteCharAt(where.length() - 1);
            where.append(")");
            break;
          case (int) PLAYLIST_FAVORITES:
            long favorites_id = MusicUtils.getFavoritesId(getActivity());
            projection =
                new String[] {
                  Playlists.Members._ID,
                  Playlists.Members.AUDIO_ID,
                  MediaColumns.TITLE,
                  AudioColumns.ALBUM,
                  AudioColumns.ARTIST
                };
            uri = Playlists.Members.getContentUri(EXTERNAL, favorites_id);
            sortOrder = Playlists.Members.DEFAULT_SORT_ORDER;
            break;
          default:
            if (id < 0) return null;
            projection =
                new String[] {
                  Playlists.Members._ID,
                  Playlists.Members.AUDIO_ID,
                  MediaColumns.TITLE,
                  AudioColumns.ALBUM,
                  AudioColumns.ARTIST,
                  AudioColumns.DURATION
                };

            uri = Playlists.Members.getContentUri(EXTERNAL, mPlaylistId);
            sortOrder = Playlists.Members.DEFAULT_SORT_ORDER;
            break;
        }
      } else if (Audio.Genres.CONTENT_TYPE.equals(mimeType)) {
        long genreId = getArguments().getLong(BaseColumns._ID);
        uri = Genres.Members.getContentUri(EXTERNAL, genreId);
        projection =
            new String[] {
              BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST
            };
        where = new StringBuilder();
        where.append(AudioColumns.IS_MUSIC + "=1").append(" AND " + MediaColumns.TITLE + " != ''");
        sortOrder = Genres.Members.DEFAULT_SORT_ORDER;
      } else {
        if (Audio.Albums.CONTENT_TYPE.equals(mimeType)) {
          long albumId = getArguments().getLong(BaseColumns._ID);
          where.append(" AND " + AudioColumns.ALBUM_ID + "=" + albumId);
          sortOrder = Audio.Media.TRACK + ", " + sortOrder;
        } else if (Audio.Artists.CONTENT_TYPE.equals(mimeType)) {
          sortOrder = MediaColumns.TITLE;
          long artist_id = getArguments().getLong(BaseColumns._ID);
          where.append(" AND " + AudioColumns.ARTIST_ID + "=" + artist_id);
        }
      }
    }
    return new CursorLoader(getActivity(), uri, projection, where.toString(), null, sortOrder);
  }