Android入門:使用Android自帶媒體庫讀取MP3文件

今天研究了下如何在Android讀取SD卡中的媒體文件(MP3),開始的思路是遍歷SD卡所有目錄,相信這也是所有開發者第一會想到的思路,無法就是遍歷所有文件,將所有後綴名爲.mp3讀取出來;但是最後發現,如果你對Android稍有了解,你會發現,其實媒體掃描這個工作,Android設置已經替我們幹了,Android系統會在SD卡有更新的時候自動將SD卡文件分類(視頻/音頻/圖片...),並存入SQLite數據庫,就保存在媒體存儲器裏面(com.android.providers.media),下面代碼是從媒體存儲器裏面讀取MP3文件的方法:


public ArrayList<HashMap<String,Object>> scanAllAudioFiles(){
			//生成動態數組,並且轉載數據  
			    ArrayList<HashMap<String,Object>> mylist = newArrayList<HashMap<String,Object>>();  
			//查詢媒體數據庫
			Cursor cursor =getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
			//遍歷媒體數據庫
			if(cursor.moveToFirst()){
			 
			      while (!cursor.isAfterLast()){ 
			      
			       //歌曲編號
			       int id =cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID)); 
			       //歌曲標題
			       String tilte =cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)); 
			       //歌曲的專輯名:MediaStore.Audio.Media.ALBUM
			       String album =cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM)); 
			       //歌曲的歌手名: MediaStore.Audio.Media.ARTIST
			       String artist =cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)); 
			       //歌曲文件的路徑 :MediaStore.Audio.Media.DATA
			       String url =cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));   
			       //歌曲的總播放時長:MediaStore.Audio.Media.DURATION
			       int duration =cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));   
			       //歌曲文件的大小 :MediaStore.Audio.Media.SIZE
			       Long size =cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));
			      
			       if(size>1024*800){//大於800K
			       HashMap<String,Object> map = new HashMap<String,Object>();
			       map.put("musicId", id);  
			       map.put("musicTitle", tilte); 
			       map.put("musicFileUrl",url); 
			         map.put("music_file_name", tilte); 
			         mylist.add(map);  
			       }
			       cursor.moveToNext(); 
			      } 
			      }
			return mylist;
			}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章