標籤:android style blog http color 使用 os strong
在預設的情況下。由自己的程式建立,並儲存在應用程式私人檔案夾中的媒體檔案,對其他應用程式來說是停用。要想這些媒體檔案可以被其他應用程式使用。需要把他們添加到媒體庫中,目前有兩種方法可以實現。
第一種:使用媒體掃描器添加到媒體庫。
/** * 掃描指定目錄了的檔案,添加到媒體庫 * * @param filePath * 路徑 */ private void scanMedia(final String filePath) { MediaScannerConnectionClient mediaSan = new MediaScannerConnectionClient() { private MediaScannerConnection msc = null; { // 首先需要建立與媒體掃描器的串連 msc = new MediaScannerConnection(MainActivity.this, this); msc.connect(); } @Override public void onScanCompleted(String path, Uri uri) { // 掃描完成關閉與媒體掃描器的串連 msc.disconnect(); MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this, "掃描完成!", Toast.LENGTH_SHORT).show(); } }); } @Override public void onMediaScannerConnected() { // 可以指定一個mime類型,如果不指定Media Scaner根據檔案名稱自己假定一種類型 String mimeType = null; msc.scanFile(filePath, mimeType); } }; }View Code
這裡主要用到的是“MediaScannerConnectionClient”和“MediaScannerConnection”兩個類。
實現步驟:
(1)建立與媒體掃描器的串連。
(2)調用scanFile方法掃描檔案。
(3)掃描完成後,關閉與掃描器的串連。
第二種:手動添加到媒體庫
ContentValues values = new ContentValues(); //媒體檔案的標題 values.put(Audio.AudioColumns.TITLE,"我的媒體檔案"); //時間戳記 values.put(Audio.AudioColumns.DATE_ADDED,System.currentTimeMillis()/1000); //檔案類型 values.put(Audio.AudioColumns.MIME_TYPE,"audio/amr"); //指定檔案路徑。必須是絕對路徑 values.put(MediaStore.Audio.Media.DATA, "/sdcard/myVideo.mp4"); //把檔案插入到媒體庫ContentProvider中 ContentResolver resolver = getContentResolver(); Uri uri= resolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values); //發送廣播。通知此媒體檔案已經可以用啦 sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,uri));
View Code