Пример #1
0
  /** 批量向歌单添加音乐 */
  public static void addSongListToPlaylist(
      final Context context, final PlayList playlist, final ArrayList<Song> songs) {
    Cursor cur =
        context
            .getContentResolver()
            .query(
                MediaStore.Audio.Playlists.Members.getContentUri(
                    "external", playlist.getmPlayListId()),
                null,
                null,
                null,
                MediaStore.Audio.Playlists.Members.TRACK + " ASC");

    long count = 0;
    if (cur.moveToLast()) {
      count = cur.getLong(cur.getColumnIndex(MediaStore.Audio.Playlists.Members.TRACK));
    }
    cur.close();

    ContentValues[] values = new ContentValues[songs.size()];
    for (int i = 0; i < songs.size(); i++) {
      values[i] = new ContentValues();
      values[i].put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, count + 1);
      values[i].put(MediaStore.Audio.Playlists.Members.AUDIO_ID, songs.get(i).getmSongId());
    }

    Uri uri =
        MediaStore.Audio.Playlists.Members.getContentUri("external", playlist.getmPlayListId());
    ContentResolver resolver = context.getContentResolver();
    resolver.bulkInsert(uri, values);
    resolver.notifyChange(Uri.parse("content://media"), null);
  }
Пример #2
0
  /** 向歌单添加音乐 */
  public static void addSongToPlaylist(
      final Context context, final PlayList playlist, final Song song) {
    Cursor cur =
        context
            .getContentResolver()
            .query(
                MediaStore.Audio.Playlists.Members.getContentUri(
                    "external", playlist.getmPlayListId()),
                null,
                null,
                null,
                MediaStore.Audio.Playlists.Members.TRACK + " ASC");

    long count = 0;
    if (cur.moveToLast()) {
      count = cur.getLong(cur.getColumnIndex(MediaStore.Audio.Playlists.Members.TRACK));
    }
    cur.close();

    ContentValues values = new ContentValues();
    values.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, count + 1);
    values.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, song.getmSongId());

    Uri uri =
        MediaStore.Audio.Playlists.Members.getContentUri("external", playlist.getmPlayListId());
    ContentResolver resolver = context.getContentResolver();
    resolver.insert(uri, values);
    resolver.notifyChange(Uri.parse("content://media"), null);
  }
Пример #3
0
  /** 获得播放清单里的所有歌曲 */
  public static ArrayList<Song> getPlayListSongs(Context context, PlayList playList) {
    ArrayList<Song> songs = new ArrayList<>();

    Cursor cursor =
        context
            .getContentResolver()
            .query(
                MediaStore.Audio.Playlists.Members.getContentUri(
                    "external", playList.getmPlayListId()),
                playListSongProjection,
                MediaStore.Audio.Media.IS_MUSIC + " != 0",
                null,
                null);

    for (int i = 0; i < cursor.getCount(); i++) {
      cursor.moveToPosition(i);
      Song song =
          new Song(
              cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Playlists.Members.AUDIO_ID)),
              cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Playlists.Members.TITLE)),
              cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Playlists.Members.ARTIST)),
              cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Playlists.Members.ALBUM)),
              cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Playlists.Members.DURATION)),
              cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Playlists.Members.DATA)),
              cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Playlists.Members.ALBUM_ID)),
              cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Playlists.Members.ARTIST_ID)));
      songs.add(song);
    }

    cursor.close();
    return songs;
  }
Пример #4
0
  /** 检查输入歌单名称, 为空,或已经存在 */
  public static String checkPlaylistName(Context context, String trimmedName) {

    if (trimmedName.length() == 0) {
      return context.getResources().getString(R.string.input_empty);
    }

    if (trimmedName.trim().length() == 0) {
      return context.getResources().getString(R.string.input_empty);
    }

    for (PlayList playList : mPlayListLib) {
      if (playList.getmPlayListName().equals(trimmedName)) {
        return context.getResources().getString(R.string.input_exist);
      }
    }

    return null;
  }
Пример #5
0
  /** 删除歌单 */
  public static PlayList deletePlaylist(final Context context, final PlayList playlist) {
    // 从MediaStore移除歌单
    context
        .getContentResolver()
        .delete(
            MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
            MediaStore.Audio.Playlists._ID + "=?",
            new String[] {playlist.getmPlayListId() + ""});

    // 更新歌单
    mPlayListLib.clear();
    setPlayListLib(scanPlayList(context));

    return playlist;
  }