如何从特定艺术家那里获得歌曲?

时间:2016-04-24 14:52:11

标签: java android mediastore

我试图从特定的艺术家那里获得歌曲而我不知道我会怎么做。艺术家将根据用户输入进行更改,因此不应对其进行硬编码。目前,我使用MediaStore来查询设备中的所有歌曲,但我不知道如何制作它以便它只能获取所选艺术家的歌曲。

这是代码......

public void displayArtistSongs(String artistName) {
    //retrieve song info
    ContentResolver musicResolver = getActivity().getContentResolver();
    Uri musicUri =  MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Cursor musicCursor = musicResolver.query(musicUri, null, artistName, null, null);

    if(musicCursor!=null && musicCursor.moveToFirst()){
        //get columns
        int idColumn = musicCursor.getColumnIndex
                (MediaStore.Audio.Media._ID);
        int titleColumn = musicCursor.getColumnIndex
                (MediaStore.Audio.Media.TITLE);
        //add songs to list
        do {
            long thisId = musicCursor.getLong(idColumn);
            String thisTitle = musicCursor.getString(titleColumn);

            songList.add(new Song(thisId, thisTitle, null, null, null));

        }
        while (musicCursor.moveToNext());
    }
    musicCursor.close();
}

我尝试传递artistName,以及先前在游标中传递artistId选项,但它仍然无法正常工作。有解决方案吗感谢。

1 个答案:

答案 0 :(得分:1)

要查询所选艺术家的所有歌曲,您可以使用以下代码:

String selection = MediaStore.Audio.Media.ARTIST + "=?";
String[] selectionArgs = {artistName};

Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, selection, selectionArgs, null);