1.多媒體存儲機制:
當Android的系統啟動的時候,系統會自動掃描sdcard內的(包括大容量存儲)跟系統內存的多媒體文件,並把獲得的信息保存在兩個系統數據庫中,以後在其他程序中如果想要訪問多媒體文件的信息,其實就是在這兩個數據庫中進行的,而不是直接去sdcard中或者手機內存裡取。兩張數據庫都是位於/data/data/com.android.providers.media/databases目錄下。如下圖所示:
名為external.db裡面存儲的是sdcard(包括大容量存儲的媒體信息),名為internal.db存儲的就是手機內存的媒體信息,比如說手機出廠時自帶的一些鈴聲。當然如果有多張sdcard更換使用時,這時external.db不一定是固定的,或許像下圖這樣,但每一個名字確實對應著那張sdcard。
可以使用SQLite Expert這個工具打開這個數據庫文件看一下:
這個就是存放系統內置鈴聲的表。
2.更新多媒體數據庫:
既然其他程序中如果想要訪問多媒體文件的信息,是在這兩個數據庫中進行的,而不是直接去sdcard中或者手機內存裡取。那麼當我們下載一首歌曲完成的時候可能就會需要更新播放列表,否則除了重啟機器,或者拔了sdcard再插上,目前沒有其他辦法。好吧,發送一個廣播就會把當前新下載的或者剛剛刪除的文件信息同步進數據庫了。