Android 기기에서 모든 노래 재생 목록을 검색하고 싶습니다. 나는 코드 샘플을 온라인으로 검색했지만 쿼리 playlistResolver.query (playlists, null, null, null, null)는 항상 나에게 크기 0을 준다. 재생 목록의 이름을 출력하는 do 루프는 결코 실행되지 않는다. 온라인에서 몇 가지 솔루션을 시도했지만 모두 작동하지 않았습니다. 어떤 도움을 주시면 감사하겠습니다. 감사!Android Media.Audio.Playlists는 항상 재생 목록을 반환하지 않습니다.
public void getSongList() {
//retrieve song info
ContentResolver musicResolver = getContentResolver();
//retrieve playlists
ContentResolver playlistResolver = getApplicationContext().getContentResolver();
Uri playlists = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI;
Cursor c = playlistResolver.query(playlists, null, null, null, null);
long playlistId = 0;
if(c!=null && c.moveToFirst()) {
do {
String plName = c.getString(c.getColumnIndex(MediaStore.Audio.Playlists.NAME));
playlistId = c.getLong(c.getColumnIndex(MediaStore.Audio.Playlists._ID));
Log.d("PLAYLIST NAME", "PLAYLIST NAME " + plName);
} while (c.moveToNext());
}
c.close();
Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String isMusic = MediaStore.Audio.Media.IS_MUSIC + "!= 0";//only get music tracks
Cursor musicCursor = musicResolver.query(musicUri, null, isMusic, null, null);
if(musicCursor!=null){
musicCursor.moveToFirst();
//get columns
int titleColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.TITLE);
int idColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media._ID);
int artistColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.ARTIST);
int durationColumn = musicCursor.getColumnIndex
(MediaStore.Audio.AudioColumns.DURATION);
//add songs to list
do {
long thisId = musicCursor.getLong(idColumn);
String thisTitle = musicCursor.getString(titleColumn);
String thisArtist = musicCursor.getString(artistColumn);
int thisDuration = musicCursor.getInt(durationColumn);
//String thisPlaylist = musicCursor.getString(playlistColumn);
//Log.d("SONG IN PLAYLIST", "SONG " + thisTitle + " IN PLAYLIST " + thisPlaylist);
songList.add(new Song(thisId, thisTitle, thisArtist, thisDuration));
}
while (musicCursor.moveToNext());
}
}