一種Android中加快多媒體掃描過程的方法
【專利摘要】本發(fā)明提供了一種加快多媒體掃描過程的方法,即通過控制多媒體掃描的范圍來減少掃描的工作量,從而減少掃描時間。本發(fā)明解決技術(shù)問題所采用的技術(shù)方案是:一種加快多媒體掃描過程的方法,預(yù)先根據(jù)各個外部存儲卷的專門用途等特性確定無需進行多媒體掃描的存儲卷,當(dāng)MediaProvider收到該卷掛載的廣播后不對此卷進行多媒體掃描;對于需要進行掃描的存儲卷,預(yù)先確定其一級子目錄中無需進行媒體掃描的目錄,尤其是那些包含大量文件卻沒有多媒體文件的目錄,當(dāng)對該卷進行媒體掃描時,跳過這些無需掃描的一級子目錄。通過這種方法,可以有效減少媒體掃描的時間。
【專利說明】 —種Android中加快多媒體掃描過程的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種加快多媒體掃描過程的方法,尤其涉及的是一種Android中加快多媒體掃描過程的方法。
【背景技術(shù)】
[0002]Android系統(tǒng)在系統(tǒng)啟動后,需要對存儲設(shè)備進行一次多媒體掃描,并把掃描到的音視頻等媒體文件記錄到數(shù)據(jù)庫,進而以一種統(tǒng)一的形式(MediaProvider)提供給其它應(yīng)用(比如音樂播放器、視頻播放器等)及系統(tǒng)調(diào)用。目前,Android系統(tǒng)在各類嵌入式領(lǐng)域廣泛使用,硬件配置也不斷提升,存儲設(shè)備數(shù)量和存儲空間也不斷增加,而開機后的多媒體掃描過程所需時間也不斷增加,進而影響到一些多媒體應(yīng)用的用戶體驗。
[0003]當(dāng)前的多媒體掃描過程是:系統(tǒng)啟動完畢后發(fā)出相應(yīng)廣播(ACT10N_B00T_COMPLETED),MediaProvider中的MediaScannerReceiver接收到廣播后開始遍歷掃描內(nèi)部存儲;外部存儲掛載完畢后也會發(fā)出相應(yīng)廣播(ACT10N_MEDIA_M0UNTED),MediaProvider中的MediaScannerReceiver接收到廣播后開始遍歷掃描外部存儲。為了更好的支持多存儲設(shè)備,一些廠商對后者做了修改,以確保每次某個外部存儲卷掛載后,只會掃描該存儲卷,而不是掃描整個外部存儲空間,本發(fā)明也以此為基礎(chǔ)。但不管是何種方法,其掃描過程都是不加篩選的完全遍歷,因此會有時間浪費在一些沒有必要的遍歷上,尤其是當(dāng)某些存儲卷各自有其專門用途的時候,以及已確定某存儲卷的某些文件目錄沒有必要掃描的時候(比如該目錄下不會存在多媒體文件,或者該目錄下的多媒體文件應(yīng)該忽略)。
【發(fā)明內(nèi)容】
[0004]為了克服現(xiàn)有的多媒體掃描過程時間過長的不足,本發(fā)明提供了一種加快多媒體掃描過程的方法,即通過控制多媒體掃描的范圍來減少掃描的工作量,從而減少掃描時間。
[0005]本發(fā)明解決技術(shù)問題所采用的技術(shù)方案是:一種加快多媒體掃描過程的方法,預(yù)先根據(jù)各個外部存儲卷的專門用途等特性確定無需進行多媒體掃描的存儲卷,當(dāng)MediaProvider收到該卷掛載的廣播后不對此卷進行多媒體掃描;對于需要進行掃描的存儲卷,預(yù)先確定其一級子目錄中無需進行媒體掃描的目錄,尤其是那些包含大量文件卻沒有多媒體文件的目錄,當(dāng)對該卷進行媒體掃描時,跳過這些無需掃描的一級子目錄。通過這種方法,可以有效減少媒體掃描的時間。
[0006]一種加快多媒體掃描過程的方法,其步驟如下:
步驟1,確定所有存儲設(shè)備中無需進行掃描的存儲卷,并記錄存儲卷的名字;
步驟2,對于需要掃描的存儲卷,確定其所有一級子目錄中無需進行掃描的一級子目錄,記錄該存儲卷的名字和對應(yīng)的所有無需掃描的一級子目錄的名字;
步驟3,Android系統(tǒng)啟動完畢時,發(fā)出相應(yīng)廣播(ACT10N_B00T_C0MPLETED);
步驟 4,MediaScannerReceiver 接收到廣播(ACT10N_B00T_C0MPLETED),并創(chuàng)建MediaScanner,開始掃描內(nèi)部存儲(內(nèi)部存儲是必須要掃描的);
步驟5,MediaScanner掃描內(nèi)部存儲時,判斷掃描到的一級子目錄是否包含在步驟2所記錄的該卷下無需掃描的一級子目錄中,如果未包含,則遍歷掃描此一級子目錄,如果已包含,則跳過此一級子目錄;
步驟6,當(dāng)有外部存儲卷掛載完成時,系統(tǒng)發(fā)出相應(yīng)廣播(ACTION_MEDIA_MOUNTED);步驟 7,MediaScannerReceiver 接收到廣播(ACTION_MEDIA_MOUNTED),然后根據(jù)該Intent附加的Uri數(shù)據(jù)得出該Uri的路徑,再根據(jù)此路徑得出對應(yīng)的存儲卷的名字;
步驟8,如果此存儲卷的名字包含在步驟I中記錄的無需掃描的存儲卷的名字中,則不對其進行掃描并進入步驟11,否則,進入步驟9 ;
步驟9,創(chuàng)建MediaScanner,開始掃描該外部存儲卷;
步驟10, MediaScanner掃描外部存儲卷時,判斷掃描到的一級子目錄是否包含在步驟2所記錄的該卷下無需掃描的一級子目錄中,如果未包含,則遍歷掃描此一級子目錄,如果已包含,則跳過此子目錄;
步驟11,存儲卷掃描完成,發(fā)出廣播(ACTION_MEDIA_SCANNER_FINISHED);
步驟12,多媒體應(yīng)用接收到廣播(ACTION_MEDIA_SCANNER_FINISHED)后,即可訪問多媒體數(shù)據(jù)庫更新后的多媒體數(shù)據(jù),進而可以進行數(shù)據(jù)的分析、顯示、播放等操作。
[0007]和以往技術(shù)相比,本發(fā)明的有益效果是:此方法有效減少了媒體掃描過程的時間,減少了多媒體應(yīng)用的等待時間,進而提升了多媒體應(yīng)用的用戶體驗。尤其是當(dāng)存儲設(shè)備中文件量巨大且按目錄分類明確,或當(dāng)存在多個存儲設(shè)備及各個存儲設(shè)備有其專門用途的情況下,提升效果尤為明顯。
【專利附圖】
【附圖說明】
[0008]圖1是本發(fā)明加快多媒體掃描過程的流程圖。
【具體實施方式】
[0009]下面結(jié)合實施例參照附圖進行詳細說明,以便對本發(fā)明的技術(shù)特征及優(yōu)點進行更深入的詮釋。
[0010]一種加快多媒體掃描過程的方法,首先確定所有存儲設(shè)備中無需掃描的存儲卷,并確定需要掃描的存儲卷的文件目錄中無需進行掃描的一級子目錄,然后在操作中,掃描的時候跳過這些卷和目錄,以此減少沒有必要的掃描,并節(jié)省掃描時間。
[0011]本發(fā)明加快多媒體掃描過程的方法的流程圖如圖1所示,其步驟如下:
步驟1,分析并確定所有存儲設(shè)備中無需進行掃描的存儲卷,并記錄存儲卷的名字,這些存儲卷的名字都存儲在一個靜態(tài)數(shù)組中,這個數(shù)組定義在MediaScannerReceiver中;步驟2,對于需要掃描的存儲卷,確定其所有一級子目錄中無需進行掃描的一級子目錄,記錄該存儲卷的名字和對應(yīng)的所有無需掃描的一級子目錄的名字,以鍵值對映射的形式存儲在一個HashMap中,其中鍵是存儲卷的名字,值是一個數(shù)組,該數(shù)組存儲該卷下無需掃描的一級子目錄。這樣每個存儲卷都對應(yīng)HashMap中的一個鍵值對。該HashMap定義在MediaScanner 中;
步驟3,Android系統(tǒng)啟動完畢時,發(fā)出相應(yīng)廣播(ACT10N_B00T_C0MPLETED); 步驟 4,MediaScannerReceiver 接收到廣播(ACTION_BOOT_COMPLETED),并創(chuàng)建MediaScanner,開始掃描內(nèi)部存儲(內(nèi)部存儲是必須要掃描的);
步驟5,MediaScanner掃描內(nèi)部存儲卷時,先根據(jù)存儲卷的名字取得HashMap中對應(yīng)的數(shù)組,然后判斷掃描到的一級子目錄是否包含在數(shù)組中,如果未包含,則遍歷掃描此一級子目錄,如果已包含,則跳過此子目錄;
步驟6,當(dāng)有外部存儲設(shè)備掛載完成時,系統(tǒng)發(fā)出相應(yīng)廣播(ACTION_MEDIA_MOUNTED);步驟 7,MediaScannerReceiver 接收到廣播(ACTION_MEDIA_MOUNTED),然后根據(jù)該Intent附加的Uri數(shù)據(jù)得出該Uri的路徑,再根據(jù)此路徑得出對應(yīng)的存儲卷的名字;
步驟8,判斷此存儲卷的名字是否包含在需要忽略掃描的存儲卷數(shù)組中,如果已包含,則不對其進行掃描并進入步驟U,如果未包含,進入步驟9 ;
步驟9,創(chuàng)建MediaScanner,開始掃描該外部存儲卷;
步驟10, MediaScanner掃描外部存儲卷時,先根據(jù)存儲卷的名字取得HashMap中對應(yīng)的數(shù)組,然后判斷掃描到的一級子目錄是否包含在數(shù)組中,如果未包含,則遍歷掃描此一級子目錄,如果已包含,則跳過此子目錄;
步驟11,當(dāng)一個存儲卷完成掃描后,發(fā)出廣播(ACTION_MEDIA_SCANNER_FINISHED);步驟12,多媒體應(yīng)用接收到廣播(ACTION_MEDIA_SCANNER_FINISHED)后,即可訪問多媒體數(shù)據(jù)庫更新后的多媒體數(shù)據(jù),進而可以進行數(shù)據(jù)的分析、顯示、播放等操作。
[0012]通過以上實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明能有效減少媒體掃描的時間,并提升多媒體應(yīng)用的用戶體驗,尤其是當(dāng)存儲設(shè)備中文件量巨大且按目錄分類明確,或當(dāng)存在多個存儲設(shè)備及各個存儲設(shè)備有其專門用途的情況下,提升效果尤為明顯。
【權(quán)利要求】
1.一種Android中加快多媒體掃描過程的方法,其特征是包含以下步驟: 步驟1,確定所有存儲設(shè)備中無需進行掃描的存儲卷,并記錄存儲卷的名字; 步驟2,對于需要掃描的存儲卷,確定其所有一級子目錄中無需進行掃描的一級子目錄,記錄該存儲卷的名字和對應(yīng)的所有無需掃描的一級子目錄的名字; 步驟3,Android系統(tǒng)啟動完畢時,發(fā)出相應(yīng)廣播(ACT10N_B00T_C0MPLETED); 步驟 4,MediaScannerReceiver 接收到廣播(ACT10N_B00T_C0MPLETED),并創(chuàng)建MediaScanner,開始掃描內(nèi)部存儲; 步驟5,MediaScanner掃描內(nèi)部存儲時,判斷掃描到的一級子目錄是否包含在步驟2所記錄的該卷下無需掃描的一級子目錄中,如果未包含,則遍歷掃描此一級子目錄,如果已包含,則跳過此一級子目錄; 步驟6,當(dāng)有外部存儲卷掛載完成時,系統(tǒng)發(fā)出相應(yīng)廣播(ACTION_MEDIA_MOUNTED);步驟 7,MediaScannerReceiver 接收到廣播(ACTION_MEDIA_MOUNTED),然后根據(jù)該Intent附加的Uri數(shù)據(jù)得出該Uri的路徑,再根據(jù)此路徑得出對應(yīng)的存儲卷的名字; 步驟8,如果此存儲卷的名字包含在步驟I中記錄的無需掃描的存儲卷的名字中,則不對其進行掃描并進入步驟11,否則,進入步驟9 ; 步驟9,創(chuàng)建MediaScanner,開始掃描該外部存儲卷; 步驟10, MediaScanner掃描外部存儲卷時,判斷掃描到的一級子目錄是否包含在步驟2所記錄的該卷下無需掃描的一級子目錄中,如果未包含,則遍歷掃描此一級子目錄,如果已包含,則跳過此子目錄; 步驟11,存儲卷掃描完成,發(fā)出廣播(ACTION_MEDIA_SCANNER_FINISHED); 步驟12,多媒體應(yīng)用接收到廣播(ACTION_MEDIA_SCANNER_FINISHED)后,即可訪問多媒體數(shù)據(jù)庫更新后的多媒體數(shù)據(jù),進而可以進行數(shù)據(jù)的分析、顯示、播放等操作。
【文檔編號】G06F17/30GK103970836SQ201410144924
【公開日】2014年8月6日 申請日期:2014年4月13日 優(yōu)先權(quán)日:2014年4月13日
【發(fā)明者】田紅玉, 張宏寬, 鄭小平, 金昊炫, 高歌, 劉鵬程, 胡權(quán) 申請人:數(shù)源科技股份有限公司, 西湖電子集團有限公司