2016-04-24 99 views
0

我试图从一个特定的艺术家的歌曲,我不知道我会如何做到这一点。艺术家将根据用户输入而改变,所以不应该被硬编码。目前,我使用的是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

查询到所选择的艺术家的所有歌曲,你可以使用此代码:

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

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