MediaStore是安卓系统自带的多媒体系统数据库,他在每次开机时刷新一次,可以通过Cursor这个类对数据库进行访问与修改,修改之后需用广播强制刷新。
使用Cursor必须通过Context获得ContentResolver的对象实例。
Cursor cursor1 = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,null);
代码中的context既是调用该函数的活动的对象,先上个封装了音乐信息的类
public class Music { private String filename; private String title; private int during; private String singer; private String type; private String size; private String fileUrl; public Music(String filename,String title,int during,String singer,String type,String size,String fileUrl){ this.filename = filename; this.title = title; this.during = during; this.singer = singer; this.type = type; this.size = size; this.fileUrl = fileUrl; } public String toString(){ return "song[filename="+filename+", title="+title+", during="+during+", singer="+singer+", type="+type+", size="+size+", fileUrl="+fileUrl+"]"; } public String getFilename() { return filename; } public void setFilename(String filename) { this.filename = filename; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int getDuring() { return during; } public void setDuring(int during) { this.during = during; } public String getSinger() { return singer; } public void setSinger(String singer) { this.singer = singer; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getSize() { return size; } public void setSize(String size) { this.size = size; } public String getFileUrl() { return fileUrl; } public void setFileUrl(String fileUrl) { this.fileUrl = fileUrl; } }
下面就是用Cursor操作数据库的帮助类了
public class MusicHelper{ public static List<Music> songs = new ArrayList<Music>(); public static List<Music> getAllsongs(Context context){ Cursor cursor1 = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,null); getcorrSongs(cursor1); Cursor cursor2 = context.getContentResolver().query(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,null,null,null,null); getcorrSongs(cursor2); return songs; } public static void getcorrSongs(Cursor cursor){ Music song = null; if(cursor != null){ while(cursor.moveToNext()){ String filename = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME)); String title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)); int during = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION)); String singer = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)); String type = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.MIME_TYPE)); String size = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE)); String date = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)); song = new Music(filename,title,during,singer,type,size,date); songs.add(song); } cursor.close(); } } }
参数content即用活动的this引用传入。
allsongs = MusicHelper.getAllsongs(this);