Android中如何將下載的多媒體檔案儲存到系統媒體庫

來源:互聯網
上載者:User

      Android媒體檔案(圖片 視頻 音頻 等檔案)需要掃描到媒體庫中才能通過相關的程式來查看. 比如
編寫一個程式從互連網上下載一個圖片儲存到SDCard中,退出程式開啟系統圖片程式並看不到剛剛下載的圖片.
這就是因為圖片沒有在系統媒體庫註冊的原因. 在系統啟動的時候(或者SDCard從新載入的時候)系統會掃描媒體檔案,並註冊新發現的檔案.
下面的樣本就是如何通過代碼來註冊新的媒體檔案.

import android.content.Context;<br /> import android.media.MediaScannerConnection;<br /> import android.net.Uri; </p><p> public class MediaScanner { </p><p> private MediaScannerConnection mediaScanConn = null; </p><p> private MusicSannerClient client = null; </p><p> private String filePath = null; </p><p> private String fileType = null; </p><p> private String[] filePaths = null;<br /> /**<br /> * 然後調用MediaScanner.scanFile("/sdcard/2.mp3");<br /> * */<br /> public MediaScanner(Context context) {<br /> //建立MusicSannerClient<br /> if (client == null) { </p><p> client = new MusicSannerClient();<br /> } </p><p> if (mediaScanConn == null) { </p><p> mediaScanConn = new MediaScannerConnection(context, client);<br /> }<br /> } </p><p> class MusicSannerClient implements<br /> MediaScannerConnection.MediaScannerConnectionClient { </p><p> public void onMediaScannerConnected() { </p><p> if(filePath != null){ </p><p> mediaScanConn.scanFile(filePath, fileType);<br /> } </p><p> if(filePaths != null){ </p><p> for(String file: filePaths){ </p><p> mediaScanConn.scanFile(file, fileType);<br /> }<br /> } </p><p> filePath = null; </p><p> fileType = null; </p><p> filePaths = null;<br /> } </p><p> public void onScanCompleted(String path, Uri uri) {<br /> // TODO Auto-generated method stub<br /> mediaScanConn.disconnect();<br /> } </p><p> } </p><p> /**<br /> * 掃描檔案標籤資訊<br /> * @param filePath 檔案路徑 eg:/sdcard/MediaPlayer/dahai.mp3<br /> * @param fileType 檔案類型 eg: audio/mp3 media /* application/ogg<br /> * */<br /> public void scanFile(String filepath,String fileType) { </p><p> this.filePath = filepath; </p><p> this.fileType = fileType;<br /> //串連之後調用MusicSannerClient的onMediaScannerConnected()方法<br /> mediaScanConn.connect();<br /> }<br /> /**<br /> * @param filePaths 檔案路徑<br /> * @param fileType 檔案類型<br /> * */<br /> public void scanFile(String[] filePaths,String fileType){ </p><p> this.filePaths = filePaths; </p><p> this.fileType = fileType; </p><p> mediaScanConn.connect(); </p><p> } </p><p> public String getFilePath() { </p><p> return filePath;<br /> } </p><p> public void setFilePath(String filePath) { </p><p> this.filePath = filePath;<br /> } </p><p> public String getFileType() { </p><p> return fileType;<br /> } </p><p> public void setFileType(String fileType) { </p><p> this.fileType = fileType;<br /> } </p><p> }

 

原帖地址:http://bashenmail.javaeye.com/blog/603680

相關文章

聯繫我們

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