Android 之 向媒體庫添加新媒體

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.