- 专门创建一个类用来获取歌曲的信息 */
public class AudioUtils {
/*
*
* */
//创建一个音乐实体类的实例的方法
public static ArrayList getAllSongs(Context context) {
// 初始化一个音乐实体类集合对象,用来存储下面获取到的音乐信息
ArrayList songs = null;
// 通过内容提供者的查询接口来获取到手机里面的音乐文件
Cursor cursor = context.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
// 这里新建一个数组告诉提供者要返回的列
new String[] { MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.YEAR,
MediaStore.Audio.Media.MIME_TYPE,
MediaStore.Audio.Media.SIZE,
MediaStore.Audio.Media.DATA },
//设置查询的条件
MediaStore.Audio.Media.MIME_TYPE + "=? or "
+ MediaStore.Audio.Media.MIME_TYPE + "=?",
new String[] { "audio/mpeg", "audio/x-ms-wma" }, null);
// 实例化一个Song数组实体类对象
songs = new ArrayList();
if (cursor.moveToFirst()) {
//当光标移动到第一行时,执行下面的方法
Song song = null;//新建一个歌曲类实例化对象,把cursor读出来的信息文件,存进去
do {
// 实例化Song类对象
song = new Song();
//在把获取到的值通过实体类对象赋值到实体类当中去
// 文件名
song.setFileName(cursor.getString(1));
// 歌曲名
song.setTitle(cursor.getString(2));
// 时长
song.setDuration(cursor.getInt(3));
// 歌手名
song.setSinger(cursor.getString(4));
// 专辑名
song.setAlbum(cursor.getString(5));
// 年代
if (cursor.getString(6) != null) {
song.setYear(cursor.getString(6));
} else {
song.setYear("未知");
}
// 歌曲格式
if ("audio/mpeg".equals(cursor.getString(7).trim())) {
song.setType("mp3");
} else if ("audio/x-ms-wma".equals(cursor.getString(7).trim())) {
song.setType("wma");
}
// 文件大小
if (cursor.getString(8) != null) {
float size = cursor.getInt(8) / 1024f / 1024f;
song.setSize((size + "").substring(0, 4) + "M");
} else {
song.setSize("未知");
}
// 文件路径
if (cursor.getString(9) != null) {
song.setFileUrl(cursor.getString(9));
}
//把获得到的数据传输到ArrayList列表当中去
songs.add(song);
// 当光标移动到下一行的时候,继续循环,当获取到的内容没有时,光标停止移动,不满足循环跳出去
} while (cursor.moveToNext());
//关闭光标释放资源
cursor.close();
}
return songs;
}
上面是获取音乐文件的代码,音乐实体类,主界面上面就是一个一个Button,点击的时候把获取到的数据显示到下面的按钮中间去