天天看點

MediaStore的應用

  後來通過觀察終端的Log,發現每次開機時,會有幾條tag為MediaScanner的log資訊,顧名思義,這是在掃描媒體庫,會不會是這個背景服務實作了圖庫和音樂的快速相應呢?帶着此問題去查閱API,果然發現一個強大的類——MediaStore,通過類名很容易能想到,這個類是用于存放多媒體的。此類包含三個内部類,分别為:

  MediaStore.Audio: 存放音頻資訊

  MediaStore.Image: 存放圖檔資訊

  MediaStore.Vedio: 存放視訊資訊

  上訴三個内部類又有其各自的内部類,鑒于其結構比較複雜,就不詳細去描述了,有興趣的朋友可以結合API自行研究。

  這三個内部類存儲了多媒體的一些基本資訊,并通過ContentProvider的資料共享的機制,将其共享出來,提供給各個應用程式使用。下面的例子展示了一個讀取圖檔資訊的示例: 

  其運作結果如下:

  哈哈,又是顯示了一張美女圖檔,這也算是枯燥程式設計中的一點調味吧。

  MediaStore中的存儲的資訊是通過MediaScannerService這個背景服務維護的,MediaScannerService在接受到系統開機(BOOT_COMPLETED)、媒體挂載(MEDIA_MOUNTED)和掃描指令(MEDIA_SCANNER_SCAN_FILE)廣播資訊時,即啟動MediaScannerService中掃描的相關代碼(MediaScanner,此類被@hide隐藏,是以不多介紹)進行掃描和更新MediaStore内的資訊。

  通過MediaStore和MediaScannerService的配合使用,實作類似系統自帶的圖庫和音樂播放器檔案清單功能。

相關連結:

繼續閱讀