Android音乐播放器-读取SD卡中歌曲

   新建一个名为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;
	}

猜你喜欢

转载自crazysumer.iteye.com/blog/1856275