標籤:
MediaStore是安卓系統內建的多媒體系統資料庫,他在每次開機時重新整理一次,可以通過Cursor這個類對資料庫進行訪問與修改,修改之後需用廣播強制重新整理。
使用Cursor必須通過Context獲得ContentResolver的對象執行個體。
Cursor cursor1 = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,null);
View Code
代碼中的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);
使用MeidaStore.Audio獲得手機中的音頻檔案