1.Android中所有的多媒體文件除了存儲在物理硬盤上,還會將文件信息(路徑、id、類型、)保存到數據庫中,這樣當我們想要獲取這些文件的信息時,就不需要耗時的掃描硬盤,只需要讀數據庫就可以了。Android平台中稱手機終端內存為內部存儲空間,稱SD卡為外部存儲空間。針對內部和外部存儲空間中的媒體文件信息是分開管理的,各自有獨立的數據庫管理。外部存儲空間和內部存儲空間對應的卷標為”external”和”internal”。
2.數據庫的數據都會由相應的內容提供者暴露出來,根據預先定義的URI,可以輕松獲取這些數據
3.安卓有一個服務專門用於將文件信息掃描添加到數據庫中,該服務開機自啟動(監聽了開機廣播),也可以由開發人員在特定的時機主動發送廣播更新數據庫的信息,比如剛剛保存了一張圖片希望立刻在圖庫中看到。
下面代碼演示如何獲取手機視頻文件的一些數據
ContentResolver contentResolver=context.getContentResolver(); Uri uri= MediaStore.Video.Media.EXTERNAL_CONTENT_URI; String[] projection={ MediaStore.Video.Media.DISPLAY_NAME,//視頻在sd卡中的名稱 MediaStore.Video.Media.DURATION,//視頻時長 MediaStore.Video.Media.SIZE,//視頻文件的大小 MediaStore.Video.Media.DATA,//視頻的絕對路徑 MediaStore.Video.Media.ARTIST//藝術家 }; Cursor cursor=contentResolver.query(uri,projection,null,null,null);
遍歷cursor即可獲取手機視頻文件的數據
如果要獲取音頻文件,用MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
如果要獲取圖片文件,用MediaStore.Images.Media.EXTERNAL_CONTENT_URI