新建一个名为GetMusicData的工具类,使用ContentResolver来读取ContentProvider中的媒体文件信息,取得歌曲列表(包括歌曲的歌名、歌手时长等信息)
public class GetMusicData { public static ArrayList<Song> getMusicData(Context context) { ArrayList<Song> musicData = new ArrayList<Song>(); ContentResolver cr = context.getContentResolver(); Cursor cursor = cr.query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER); Log.i("游标中的数据的行数", cursor.getCount()+ ""); if(null != cursor && cursor.getCount()>0){ for(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){ String title = cursor.getString(cursor .getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)); // Log.i("GetMusicdata--------------------", title); String singer = cursor.getString(cursor .getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)); // Log.i("GetMusicdata--------------------", singer); int time = cursor .getInt(cursor .getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION)); // Log.i("GetMusicdata--------------------", time + ""); String name = cursor .getString(cursor .getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME)); // Log.i("GetMusicdata--------------------", name); String suffix = name .substring(name.length() - 4, name.length()); String url = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)); if (suffix.endsWith(".mp3") || suffix.endsWith(".MP3")) { Song song = new Song(); song.setTitle(title); song.setSinger(singer); song.setName(name); song.setTime(time); song.setUrl(url); musicData.add(song); } } cursor.close();// 关闭游标 } Log.i("歌曲总共有=============", musicData.size()+""); return musicData; }