使用MeidaStore.Audio獲得手機中的音頻檔案

來源:互聯網
上載者:User

標籤:

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獲得手機中的音頻檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.