亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種實現(xiàn)文件掃描和保存的方法及裝置制造方法

文檔序號:6491782閱讀:205來源:國知局
一種實現(xiàn)文件掃描和保存的方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種實現(xiàn)文件掃描和保存的方法,包括:掛載存儲設(shè)備,并對該存儲設(shè)備其進行掃描;獲取該存儲設(shè)備的UUID;判斷是否有與該UUID對應(yīng)的子數(shù)據(jù)庫;若有,則打開與該存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫和公共數(shù)據(jù)庫;驗證與當前存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫中的記錄的有效性;遍歷該存儲設(shè)備中的每個文件,獲取該存儲設(shè)備中的每個文件的信息;遍歷完之后,查詢該子數(shù)據(jù)庫中關(guān)于該存儲設(shè)備的所有記錄,然后將查詢到的記錄插入公共數(shù)據(jù)庫中。采用該方法,使用戶可以快速訪問到經(jīng)常在該andriod設(shè)備上使用的存儲設(shè)備中的文件信息,并且根據(jù)andriod?SDK開發(fā)的apk不需要做修改就可以正常訪問數(shù)據(jù)庫,對于各種存儲設(shè)備具有很好的通用性。
【專利說明】一種實現(xiàn)文件掃描和保存的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計算機領(lǐng)域,尤其涉及一種實現(xiàn)文件掃描和保存的方法及裝置。
【背景技術(shù)】
[0002]Android多媒體文件掃描mediascanner的現(xiàn)有方式是:當有存儲設(shè)備A掛載后,mediascanner接收到MOUNT廣播,來對當前所有掛載的存儲設(shè)備進行文件掃描,然后將掃描后獲取的文件信息保存至一個多媒體數(shù)據(jù)庫中,方便android應(yīng)用程序apk訪問;當移除或者卸載該存儲設(shè)備A后,多媒體數(shù)據(jù)庫操作接口 mediapiOvider接收EJECT廣播將多媒體數(shù)據(jù)庫中有關(guān)存儲設(shè)備A的記錄信息全部刪除。這樣就導致每次掛載存儲設(shè)備A時,都會對設(shè)備A進行重新的掃描和信息保存,很費時間和資源,尤其是進行圖片和視頻的瀏覽時,需要重新進行解碼過程,導致apk的訪問速度很慢,降低了效率,用戶體驗不好。由于最耗時和耗資源的操作是將文件打開獲取信息,然后關(guān)閉的過程,因此現(xiàn)有技術(shù)存在的缺陷是當拔除設(shè)備后,會清空數(shù)據(jù)庫中有關(guān)該設(shè)備的記錄信息,沒有充分利用已經(jīng)掃描獲取到的文件信息結(jié)果。并且現(xiàn)有技術(shù)中針對andriodSDK開發(fā)的apk需要做修改才可以正常訪問數(shù)據(jù)庫,對于各種存儲設(shè)備通用性不強。

【發(fā)明內(nèi)容】

[0003]有鑒于此,本發(fā)明的一個目的是提供一種實現(xiàn)文件掃描和保存的方法及裝置。為了對披露的實施例的一些方面有一個基本的理解,下面給出了簡單的概括。該概括部分不是泛泛評述,也不是要確定關(guān)鍵/重要組成元素或描繪這些實施例的保護范圍。其唯一目的是用簡單的形式呈現(xiàn)一些概念,以此作為后面的詳細說明的序言。
[0004]本發(fā)明的一個目的是提供一種實現(xiàn)文件掃描和保存的方法,包括:
[0005]掛載存儲設(shè)備,并對該存儲設(shè)備其進行掃描;
[0006]獲取所述存儲設(shè)備的通用唯一標識符UUID ;
[0007]判斷是否有與所述UUID對應(yīng)的子數(shù)據(jù)庫;若有,則打開與所述存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫和公共數(shù)據(jù)庫;
[0008]驗證與當前存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫中的記錄的有效性;
[0009]遍歷所述存儲設(shè)備中的每個文件,獲取所述存儲設(shè)備中的每個文件的信息;
[0010]遍歷完之后,查詢所述子數(shù)據(jù)庫中關(guān)于該存儲設(shè)備的所有記錄,然后將查詢到的記錄插入所述公共數(shù)據(jù)庫中。
[0011]在一些可選的實施例中,還包括:
[0012]判斷若沒有與所述UUID對應(yīng)的子數(shù)據(jù)庫,則先檢查現(xiàn)有子數(shù)據(jù)庫的數(shù)量;
[0013]當現(xiàn)有子數(shù)據(jù)庫的數(shù)量大于或等于指定數(shù)量時,則對最近未使用的子數(shù)據(jù)庫進行刪除,然后創(chuàng)建與所述存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫并保存,再打開該子數(shù)據(jù)庫和公共數(shù)據(jù)庫;
[0014]當現(xiàn)有子數(shù)據(jù)庫的數(shù)量小于指定數(shù)量時,則直接創(chuàng)建與所述存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫并保存,再打開該子數(shù)據(jù)庫和公共數(shù)據(jù)庫。
[0015]在一些可選的實施例中,所述子數(shù)據(jù)庫,用于備份記錄一個對應(yīng)的存儲設(shè)備的文件信息;每個存儲設(shè)備上的文件系統(tǒng)對應(yīng)系統(tǒng)中的一個子數(shù)據(jù)庫;所述子數(shù)據(jù)庫僅由本系統(tǒng)進行操作和控制;
[0016]所述公共數(shù)據(jù)庫,用于記錄當前所有掛載的存儲設(shè)備的文件信息,還用于供其它應(yīng)用程序訪問和操作。
[0017]在一些可選的實施例中,所述在掛載存儲設(shè)備之后,還包括:
[0018]系統(tǒng)發(fā)出掛載廣播;
[0019]掃描器收到所述掛載廣播后,對該存儲設(shè)備進行掃描。
[0020]在一些可選的實施例中,所述驗證當前子數(shù)據(jù)庫中的記錄的有效性,是根據(jù)查詢子數(shù)據(jù)庫中的所有記錄的屬性進行驗證;
[0021]所述屬性至少包括:文件的存放位置和文件的最后修改時間。
[0022]在一些可選的實施例中,還包括:
[0023]若文件的存放位置屬性所對應(yīng)的文件存在,并且所述文件的最后修改時間沒有變化,說明所述存儲設(shè)備中確實有該文件,則表示該記錄有效。
[0024]在一些可選的實施例中,還包括:
[0025]若文件的存放位置屬性所對應(yīng)的文件不存在,說明所屬存儲設(shè)備中已經(jīng)沒有該文件,則表示該記錄無效,此時將該記錄刪除,繼續(xù)檢查下一條記錄。
[0026]在一些可選的實施例中,還包括:
[0027]若文件的存放位置屬性所對應(yīng)的文件存在,但是所述文件的最后修改時間有變化,則刪除該記錄,等待之后的掃描來對該文件的信息進行重新保存,繼續(xù)檢查下一條記錄。
[0028]在一些可選的實施例中,所述遍歷所述存儲設(shè)備中的每個文件,獲取所述存儲設(shè)備中的每個文件的信息,具體包括:
[0029]當遍歷得到一個文件,查看該子數(shù)據(jù)庫中是否有關(guān)于該文件的記錄,若沒有,則獲取該文件信息,并將獲取到的文件信息保存至該子數(shù)據(jù)庫中,然后繼續(xù)遍歷直到遍歷完成,若有,則繼續(xù)遍歷下一個文件。
[0030]在一些可選的實施例中,還包括:
[0031]當掃描完成,通知其它程序。
[0032]在一些可選的實施例中,如果同時掛載多個存儲設(shè)備,系統(tǒng)發(fā)出掛載廣播,掃描器會根據(jù)收到的掛載廣播,開始對每個存儲設(shè)備按掛載順序執(zhí)行掃描;并且針對每一個存儲設(shè)備分別對應(yīng)創(chuàng)建一個與其UUID號對應(yīng)的子數(shù)據(jù)庫,并存儲。
[0033]在一些可選的實施例中,當移除或卸載所述存儲設(shè)備時,系統(tǒng)發(fā)出移除或卸載廣播,多媒體內(nèi)容提供器會根據(jù)收到的移除或卸載廣播,刪除所述公共數(shù)據(jù)庫中所有關(guān)于所述該存儲設(shè)備的記錄,并且關(guān)閉與該存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫。
[0034]在一些可選的實施例中,如果同時移除或卸載多個存儲設(shè)備,系統(tǒng)發(fā)出移除或卸載的廣播,所述多媒體內(nèi)容提供器會根據(jù)收到的移除或卸載的廣播,開始按移除或卸載順序刪除所述公共數(shù)據(jù)庫中所有關(guān)于每個被移除或卸載的存儲設(shè)備的記錄,并且關(guān)閉與每個被移除或卸載的存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫。[0035]在一些可選的實施例中,當再次掛載所述存儲設(shè)備時,系統(tǒng)發(fā)出掛載廣播;掃描器接收到的掛載廣播后,只需要打開與該存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫,對該子數(shù)據(jù)庫中的信息進行更新,然后將該子數(shù)據(jù)庫中的記錄全部插入至所述公共數(shù)據(jù)庫中,供其它應(yīng)用程序apk訪問。
[0036]本發(fā)明的另一個目的是,提供一種實現(xiàn)文件掃描和保存的裝置,包括:
[0037]掃描模塊,用于對掛載的存儲設(shè)備進行掃描,并獲取所述存儲設(shè)備的通用唯一標識符UHD ;
[0038]判別模塊,用于判斷系統(tǒng)中是否有與所述UUID對應(yīng)的子數(shù)據(jù)庫;若有,則打開與所述存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫和公共數(shù)據(jù)庫;
[0039]驗證模塊,用于驗證與當前存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫中的記錄的有效性;
[0040]遍歷模塊,用于遍歷所述存儲設(shè)備中的每個文件;
[0041]獲取文件信息模塊,用于獲取所述存儲設(shè)備中的每個文件的信息;和,
[0042]查詢模塊,用于查詢所述子數(shù)據(jù)庫中關(guān)于該存儲設(shè)備的所有記錄,然后將查詢到的記錄插入所述公共數(shù)據(jù)庫中。
[0043]在一些可選的實施例中,還包括創(chuàng)建模塊;
[0044]所述判別模塊,判斷若沒有與所述UUID對應(yīng)的子數(shù)據(jù)庫,則先檢查現(xiàn)有子數(shù)據(jù)庫的數(shù)量;當現(xiàn)有子數(shù)據(jù)庫的數(shù)量大于或等于指定數(shù)量時,則對最近未使用的子數(shù)據(jù)庫進行刪除,然后通知創(chuàng)建模塊;當現(xiàn)有子數(shù)據(jù)庫的數(shù)量小于指定數(shù)量時,則直接通知創(chuàng)建模塊;
[0045]所述創(chuàng)建模塊,用于創(chuàng)建與所述存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫,并保存;
[0046]所述判別模塊,再打開所述創(chuàng)建模塊創(chuàng)建的子數(shù)據(jù)庫和公共數(shù)據(jù)庫。
[0047]在一些可選的實施例中,所述子數(shù)據(jù)庫,用于備份記錄一個對應(yīng)的存儲設(shè)備的文件信息,每個存儲設(shè)備上的文件系統(tǒng)對應(yīng)系統(tǒng)中的一個子數(shù)據(jù)庫;所述子數(shù)據(jù)庫僅由本裝置的系統(tǒng)進行操作和控制;
[0048]所述公共數(shù)據(jù)庫,用于記錄當前所有掛載的存儲設(shè)備的文件信息,還用于供其它應(yīng)用程序訪問和操作。
[0049]在一些可選的實施例中,所述驗證模塊,是根據(jù)查詢子數(shù)據(jù)庫中的所有記錄的屬性來驗證當前子數(shù)據(jù)庫中的記錄的有效性;
[0050]所述屬性至少包括:文件的存放位置和文件的最后修改時間。
[0051]在一些可選的實施例中,還包括:
[0052]若文件的存放位置屬性所對應(yīng)的文件存在,并且所述文件的最后修改時間沒有變化,說明所述存儲設(shè)備中確實有該文件,則表示該記錄有效。
[0053]在一些可選的實施例中,還包括:
[0054]若文件的存放位置屬性所對應(yīng)的文件不存在,說明所屬存儲設(shè)備中已經(jīng)沒有該文件,則表示該記錄無效,此時將該記錄刪除,繼續(xù)檢查下一條記錄。
[0055]在一些可選的實施例中,還包括:
[0056]若文件的存放位置屬性所對應(yīng)的文件存在,但是所述文件的最后修改時間有變化,則刪除該記錄,等待之后的掃描來對該文件的信息進行重新保存,繼續(xù)檢查下一條記錄。
[0057]在一些可選的實施例中,當所述遍歷模塊遍歷得到一個文件,查看該子數(shù)據(jù)庫中是否有關(guān)于該文件的記錄;若沒有,則獲取該文件信息,并將獲取到的文件信息保存至該子數(shù)據(jù)庫中,然后繼續(xù)遍歷直到遍歷完成;若有,則跳過獲取文件信息模塊,繼續(xù)遍歷下一個文件。
[0058]在一些可選的實施例中,還包括:
[0059]通知模塊,用于當掃描完成,通知其它程序。
[0060]在一些可選的實施例中,如果同時掛載多個存儲設(shè)備,系統(tǒng)發(fā)出掛載廣播,所述掃描模塊會根據(jù)收到的掛載的廣播,開始對每個存儲設(shè)備按掛載順序執(zhí)行掃描;
[0061]所述創(chuàng)建模塊,針對每個存儲設(shè)備分別對應(yīng)創(chuàng)建一個與該存儲設(shè)備的UUID號對應(yīng)的子數(shù)據(jù)庫,并存儲。
[0062]在一些可選的實施例中,還包括卸載模塊;
[0063]當移除或卸載所述存儲設(shè)備時,系統(tǒng)發(fā)出移除或卸載廣播,所述卸載模塊收到移除或卸載廣播,刪除所述公共數(shù)據(jù)庫中所有關(guān)于所述該存儲設(shè)備的記錄,并且關(guān)閉與該存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫。
[0064]在一些可選的實施例中,如果同時移除或卸載多個存儲設(shè)備,系統(tǒng)發(fā)出移除或卸載的廣播,所述卸載模塊會根據(jù)收到的移除或卸載的廣播,開始按移除或卸載順序刪除所述公共數(shù)據(jù)庫中所有關(guān)于每個存儲設(shè)備的記錄,并且關(guān)閉與每個存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫。
[0065]采用本發(fā)明提供的方案,使用戶可以快速訪問到經(jīng)常在該設(shè)備上使用的存儲設(shè)備中的文件信息,并且可以根據(jù)andriod SDK開發(fā)的apk不需要做修改就可以正常訪問數(shù)據(jù)庫,對于各種存儲設(shè)備具有很好的通用性。
[0066]為了上述以及相關(guān)的目的,一個或多個實施例包括后面將詳細說明并在權(quán)利要求中特別指出的特征。下面的說明以及附圖詳細說明某些示例性方面,并且其指示的僅僅是各個實施例的原則可以利用的各種方式中的一些方式。其它的益處和新穎性特征將隨著下面的詳細說明結(jié)合附圖考慮而變得明顯,所公開的實施例是要包括所有這些方面以及它們的等同。
[0067]說明書附圖
[0068]圖1是本發(fā)明實施例提供的掛載存儲設(shè)備的流程示意圖;
[0069]圖2是本發(fā)明實施例提供的卸載存儲設(shè)備的流程示意圖;
[0070]圖3是本發(fā)明實施例提供的另一種掛載存儲設(shè)備的流程示意圖;
[0071]圖4是本發(fā)明實施例提供的另一種卸載存儲設(shè)備的流程示意圖;
[0072]圖5是本發(fā)明實施例提供的一種實現(xiàn)文件掃描和保存的裝置的結(jié)構(gòu)示意圖;
[0073]圖6是本發(fā)明實施例提供的另一種實現(xiàn)文件掃描和保存的裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0074]以下描述和附圖充分地示出本發(fā)明的具體實施方案,以使本領(lǐng)域的技術(shù)人員能夠?qū)嵺`它們。其他實施方案可以包括結(jié)構(gòu)的、邏輯的、電氣的、過程的以及其他的改變。實施例僅代表可能的變化。除非明確要求,否則單獨的組件和功能是可選的,并且操作的順序可以變化。一些實施方案的部分和特征可以被包括在或替換其他實施方案的部分和特征。本發(fā)明的實施方案的范圍包括權(quán)利要求書的整個范圍,以及權(quán)利要求書的所有可獲得的等同物。在本文中,本發(fā)明的這些實施方案可以被單獨地或總地用術(shù)語“發(fā)明”來表示,這僅僅是為了方便,并且如果事實上公開了超過一個的發(fā)明,不是要自動地限制該應(yīng)用的范圍為任何單個發(fā)明或發(fā)明構(gòu)思。
[0075]為了解決上述android的掃描和保存的缺點,本發(fā)明實施例采用創(chuàng)建多個媒體數(shù)據(jù)庫:包括不僅分別為每個存儲設(shè)備的文件系統(tǒng)對應(yīng)創(chuàng)建一個子數(shù)據(jù)庫,并且多創(chuàng)建一個公共數(shù)據(jù)庫來解決。
[0076]在一些可選的實施例中,提供了一種實現(xiàn)文件掃描和保存的方法。圖1是本發(fā)明實施例一提供的掛載存儲設(shè)備的流程示意圖。如圖1所示,該方法包括:
[0077]步驟S101,掛載存儲設(shè)備;
[0078]步驟S102,對該存儲設(shè)備進行掃描;
[0079]步驟S103,獲取該存儲設(shè)備的文件系統(tǒng)的通用唯一標識符UUID ;
[0080]步驟S104,判斷系統(tǒng)中是否有與UUID對應(yīng)的子數(shù)據(jù)庫;若有,則打開公共數(shù)據(jù)庫、以及與存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫;
[0081]步驟S105,驗證與當前存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫中的記錄的有效性;
[0082]步驟S106,遍歷存儲設(shè)備中的每個文件,獲取所述存儲設(shè)備中的每個文件的信息;
[0083]步驟S107,遍歷完之后,查詢子數(shù)據(jù)庫中關(guān)于該存儲設(shè)備的所有記錄,然后將查詢到的記錄插入至公共數(shù)據(jù)庫中;
[0084]步驟S108,結(jié)束掃描。
[0085]在一些可選的實施例中,子數(shù)據(jù)庫,用于備份記錄一個對應(yīng)的存儲設(shè)備的文件信息,app不可訪問;每個存儲設(shè)備上的文件系統(tǒng)對應(yīng)系統(tǒng)中的一個子數(shù)據(jù)庫;子數(shù)據(jù)庫僅由本系統(tǒng)進行操作和控制;
[0086]公共數(shù)據(jù)庫,用于記錄當前所有掛載的存儲設(shè)備的文件信息,還用于供其它應(yīng)用程序app訪問和操作。
[0087]在一些可選的實施例中,還提供了一種實現(xiàn)文件掃描和保存的方法。圖1是本發(fā)明實施例一提供的掛載存儲設(shè)備的流程示意圖。如圖1所示,該方法包括:
[0088]步驟S101,掛載存儲設(shè)備,系統(tǒng)發(fā)出掛載廣播,啟動掃描器;
[0089]步驟S102,掃描器收到掛載廣播后,對該存儲設(shè)備進行掃描;
[0090]步驟S103,獲取該存儲設(shè)備的文件系統(tǒng)的通用唯一標識符UUID ;
[0091]步驟S104,判斷系統(tǒng)中是否有與UUID對應(yīng)的子數(shù)據(jù)庫;若有,說明之前掛載過該存儲設(shè)備,則打開公共數(shù)據(jù)庫、與存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫;
[0092]可選地,若沒有與UUID對應(yīng)的子數(shù)據(jù)庫,則先檢查現(xiàn)有子數(shù)據(jù)庫的數(shù)量:當現(xiàn)有子數(shù)據(jù)庫的數(shù)量大于或等于指定數(shù)量時,則對最近未使用的子數(shù)據(jù)庫進行刪除,然后創(chuàng)建與存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫,并保存該子數(shù)據(jù)庫,再打開與該子數(shù)據(jù)庫和公共數(shù)據(jù)庫;當現(xiàn)有子數(shù)據(jù)庫的數(shù)量小于指定數(shù)量時,則直接創(chuàng)建與該存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫,并保存,再打開與該子數(shù)據(jù)庫和公共數(shù)據(jù)庫。
[0093]可選地,子數(shù)據(jù)庫,用于備份記錄一個對應(yīng)的存儲設(shè)備的文件系統(tǒng)中文件信息,app不可訪問;每個存儲設(shè)備上的文件系統(tǒng)對應(yīng)系統(tǒng)中的一個子數(shù)據(jù)庫;子數(shù)據(jù)庫僅由本系統(tǒng)進行操作和控制;[0094]公共數(shù)據(jù)庫,用于記錄當前所有掛載的存儲設(shè)備的文件系統(tǒng)中的文件信息,還用于供其它應(yīng)用程序app訪問和操作。
[0095]子數(shù)據(jù)庫和公共數(shù)據(jù)庫的表結(jié)構(gòu)相同。
[0096]步驟S105,驗證與當前存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫中的記錄的有效性;
[0097]可選地,可以根據(jù)查詢子數(shù)據(jù)庫中的所有記錄的屬性來驗證;
[0098]其中,屬性至少包括:文件的存放位置和文件的最后修改時間。
[0099]可選地,若文件的存放位置屬性所對應(yīng)的文件存在,并且文件的最后修改時間沒有變化,說明存儲設(shè)備中確實有該文件,則表示該記錄有效,繼續(xù)檢查下一條記錄。
[0100]可選地,若文件的存放位置屬性所對應(yīng)的文件不存在,說明所屬存儲設(shè)備中已經(jīng)沒有該文件,則表示該記錄無效,此時將該記錄刪除,繼續(xù)檢查下一條記錄。
[0101]可選地,若文件的存放位置屬性所對應(yīng)的文件存在,但是文件的最后修改時間有變化,說明該文件已被修改,該記錄保存的文件信息不正確了,則刪除該記錄,等待之后的掃描來對該文件的信息進行重新保存,繼續(xù)檢查下一條記錄。
[0102]步驟S106,遍歷存儲設(shè)備中的每個文件,獲取存儲設(shè)備中的每個文件的信息;
[0103]可選地,當遍歷得到一個文件,查看該子數(shù)據(jù)庫中是否有關(guān)于該文件的記錄;若沒有,則獲取該文件信息,并將獲取到的文件信息保存至該子數(shù)據(jù)庫中,然后繼續(xù)遍歷直到遍歷完成,若有,則繼續(xù)遍歷下一個文件。
[0104]步驟S107,遍歷完之后,查詢子數(shù)據(jù)庫中關(guān)于該存儲設(shè)備的所有記錄,然后將查詢到的記錄插入至公共數(shù)據(jù)庫中;
[0105]步驟S108,結(jié)束掃描。
[0106]可選的,當掃描完成,通知其它程序。
[0107]可選地,如果同時掛載多個存儲設(shè)備,系統(tǒng)發(fā)出掛載廣播,掃描器會根據(jù)收到的掛載的廣播,開始對每個存儲設(shè)備按掛載的順序執(zhí)行掃描;并且針對每一個存儲設(shè)備對應(yīng)創(chuàng)建一個與其UUID號對應(yīng)的子數(shù)據(jù)庫,并存儲。
[0108]上述實施例是針對掛載存儲設(shè)備提供的方法,在一些可選的實施例中,還提供了一種實現(xiàn)文件掃描和保存的方法。圖2是本發(fā)明實施例一提供的卸載存儲設(shè)備的流程示意圖。如圖2所示,該方法包括以下步驟:
[0109]步驟S201,移除或卸載存儲設(shè)備;
[0110]步驟S202,收到移除或卸載廣播,系統(tǒng)發(fā)出移除或卸載廣播;
[0111]步驟S203,多媒體內(nèi)容提供器會根據(jù)收到的移除或卸載廣播,刪除公共數(shù)據(jù)庫中所有關(guān)于該存儲設(shè)備的記錄;
[0112]步驟S204,關(guān)閉與該存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫。
[0113]如果同時移除或卸載多個存儲設(shè)備,系統(tǒng)發(fā)出移除或卸載的廣播,多媒體內(nèi)容提供器會根據(jù)收到的移除或卸載的廣播,開始按移除或卸載的順序刪除公共數(shù)據(jù)庫中所有關(guān)于每個被移除或卸載的存儲設(shè)備的記錄,并且關(guān)閉與每個被移除或卸載的存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫。
[0114]可選的,當再次掛載之前已經(jīng)掛載過的存儲設(shè)備時,系統(tǒng)發(fā)出掛載廣播;掃描器接收到的掛載廣播后,只需要打開與該存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫,對該子數(shù)據(jù)庫中的信息進行更新,然后將該子數(shù)據(jù)庫中的記錄全部插入至公共數(shù)據(jù)庫中,供apk訪問。[0115]在一些可選的實施例中,還提供了一種實現(xiàn)文件掃描和保存的方法。如圖3所示,包括:
[0116]步驟S301,掛載存儲設(shè)備A,系統(tǒng)發(fā)出掛載廣播;
[0117]步驟S302,啟動mediascanner ;mediascanner收到掛載廣播后,先對存儲設(shè)備A進行掃描;
[0118]步驟S303,獲取存儲設(shè)備A的ntfs文件系統(tǒng)的通用唯一標識符UUID,該UUID為1234 ;
[0119]步驟S304,判斷系統(tǒng)中是否有與UUID為1234對應(yīng)的名為external-1234, db的子數(shù)據(jù)庫;若有,說明之前掛載過該存儲設(shè)備A,則打開名為external, db的公共數(shù)據(jù)庫,以及與存儲設(shè)備A對應(yīng)的和名為external-1234, db的子數(shù)據(jù)庫;
[0120]可選地,若沒有與UUID為1234對應(yīng)的名為external-1234, db的子數(shù)據(jù)庫,則說明該存儲設(shè)備A是首次掛載,則先檢查現(xiàn)有的子數(shù)據(jù)庫的數(shù)量:當現(xiàn)有子數(shù)據(jù)庫的數(shù)量大于或等于指定數(shù)量(例如5)時,則對最近未使用的子數(shù)據(jù)庫進行刪除,然后創(chuàng)建與存儲設(shè)備A對應(yīng)的名為external-1234, db的子數(shù)據(jù)庫并保存,再打開該子數(shù)據(jù)庫和名為external,db的公共數(shù)據(jù)庫;當現(xiàn)有子數(shù)據(jù)庫的數(shù)量小于指定數(shù)量時,則直接創(chuàng)建與存儲設(shè)備A對應(yīng)的名為external-1234, db的子數(shù)據(jù)庫并保存,再打開該子數(shù)據(jù)庫和名為external, db的公共數(shù)據(jù)庫。
[0121]名為external-1234, db的子數(shù)據(jù)庫,負責保存與存儲設(shè)備A對應(yīng)文件系統(tǒng)中的文件信息,由本系統(tǒng)的mediascanner和mediaprovider控制,其它應(yīng)用程序app無法對它操作,其它app不可訪問;每個存儲設(shè)備上的文件系統(tǒng)對應(yīng)系統(tǒng)中的一個子數(shù)據(jù)庫;
[0122]名為external, db的公共數(shù)據(jù)庫,負責記錄所有已掛載文件系統(tǒng)的文件信息,方便app去訪問。
[0123]子數(shù)據(jù)庫和公共數(shù)據(jù)庫的表結(jié)構(gòu)相同。
[0124]即每個存儲設(shè)備上的文件系統(tǒng)對應(yīng)一個多媒體數(shù)據(jù)庫,通過文件系統(tǒng)的UUID (唯一標識符)來——對應(yīng)地創(chuàng)建數(shù)據(jù)庫,例如ntfs文件系統(tǒng)存儲設(shè)備A的UUID為1234,則它對應(yīng)的數(shù)據(jù)庫名設(shè)計為external-1234, db,該external-1234, db只記錄有關(guān)存儲設(shè)備A中的文件信息;另外再創(chuàng)建一個名為external, db的公共數(shù)據(jù)庫來記錄當前所有掛載設(shè)備中的文件信息,方便app訪問,使得應(yīng)用程序app —次性就可以訪問所有設(shè)備中的文件信息,符合按照android SDK開發(fā)的apk。當卸載設(shè)備A時,mediaprovider接收到EJECT廣播,只刪除external, db數(shù)據(jù)庫中有關(guān)設(shè)備A的記錄信息,并且關(guān)閉設(shè)備A對應(yīng)的external-1234, db.當再次掛載設(shè)備A時,mediascanner接收到MOUNT廣播后,只需要打開數(shù)據(jù)庫external-1234, db,對externa_1234.db中的信息進行更新,然后將external-1234, db中的記錄全部插入至external, db數(shù)據(jù)庫中供apk訪問。
[0125]步驟S305, mediascanner驗證當前名為external-1234.db的子數(shù)據(jù)庫中的記錄的有效性。
[0126]具體地,可以根據(jù)查詢該子數(shù)據(jù)庫中的所有記錄的屬性來驗證。
[0127]其中,該屬性至少包括:屬性_data (文件的存放位置)和屬性IastModified (文件的最后修改時間)。有以下幾種情況:
[0128]若屬性_data所對應(yīng)的文件存在,并且IastModified沒有變化,說明存儲設(shè)備A中確實有該文件,則表示該記錄有效,繼續(xù)檢查下一條記錄。
[0129]若屬性_data所對應(yīng)的文件不存在,說明所屬存儲設(shè)備A中已經(jīng)沒有該文件,則表示該記錄無效,此時將該記錄刪除,繼續(xù)檢查下一條記錄。
[0130]若屬性_data所對應(yīng)的文件存在,但是IastModified有變化,說明該文件已被修改,該記錄保存的文件信息不正確了,也刪除該記錄,等待之后的掃描來對該文件的信息進行重新保存,繼續(xù)檢查下一條記錄。
[0131 ] 步驟S306,遍歷掃描存儲設(shè)備A中的每個文件,獲取存儲設(shè)備A中的每個文件的信息;
[0132]可選地,當遍歷得到一個文件,查看該子數(shù)據(jù)庫中是否有關(guān)于該文件的記錄;若沒有,則獲取該文件信息,并將獲取到的文件信息保存至名為external-1234, db的子數(shù)據(jù)庫中,然后繼續(xù)遍歷直到遍歷完成,若有,則繼續(xù)遍歷下一個文件。
[0133]步驟S307,遍歷完之后,查詢名為external-1234, db的子數(shù)據(jù)庫中關(guān)于存儲設(shè)備A的所有記錄,然后將查詢到的記錄保存至公共數(shù)據(jù)庫external, db中,供apk訪問;
[0134]步驟S308,結(jié)束掃描。
[0135]可選的,當掃描完成,通知其它程序。
[0136]可選地,如果同時掛載多個存儲設(shè)備:存儲設(shè)備A、存儲設(shè)備B和存儲設(shè)備C逐個掛載,mediascanner會根據(jù)收到的掛載廣播,開始對每個存儲設(shè)備按照掛載的順序執(zhí)行掃描,先掃描存儲設(shè)備A,再掃描存儲設(shè)備B,再掃描存儲設(shè)備C ;并且針對每一個存儲設(shè)備對應(yīng)創(chuàng)建一個與其UUID號對應(yīng)的子數(shù)據(jù)庫,并存儲。
[0137]如圖4所示,當需要移除或卸載該存儲設(shè)備A時,包括以下步驟:
[0138]步驟S401,移除或卸載存儲設(shè)備A ;
[0139]步驟S402,多媒體內(nèi)容提供器mediaprovider接收到移除或卸載的EJECT廣播;
[0140]步驟S403,只刪除公共數(shù)據(jù)庫external, db數(shù)據(jù)庫中有關(guān)存儲設(shè)備A的所有記錄
信息;
[0141]步驟S404,關(guān)閉與該存儲設(shè)備A對應(yīng)的名為external-1234, db的子數(shù)據(jù)庫。
[0142]當再次掛載設(shè)備A時,包括以下步驟:mediascanner接收到MOUNT掛載廣播后,只需要打開名為external-1234, db的子數(shù)據(jù)庫,對該數(shù)據(jù)庫中的信息進行更新,然后將名為external-1234, db的子數(shù)據(jù)庫中的記錄全部導入至名為external, db的公共數(shù)據(jù)庫中,供apk訪問。
[0143]采用本發(fā)明實施例提供的方案,使用戶可以快速訪問到經(jīng)常在該andriod設(shè)備上使用的存儲設(shè)備中的文件信息,并且可以根據(jù)andriod SDK開發(fā)的apk不需要做修改就可以正常訪問數(shù)據(jù)庫,對于各種存儲設(shè)備具有很好的通用性。
[0144]在一些可選的實施例中,還提供了 一種實現(xiàn)文件掃描和保存的方法。
[0145]步驟S501,先掛載存儲設(shè)備A,再掛載存儲設(shè)備B,系統(tǒng)發(fā)出掛載廣播;
[0146]步驟S502,系統(tǒng)當收到掛載廣播后,啟動mediascanner對存儲設(shè)備A進行掃描;
[0147]步驟S503,獲取存儲設(shè)備A的ntfs文件系統(tǒng)的通用唯一標識符UUID,該UUID為1234 ;
[0148]步驟S504,判斷系統(tǒng)中是否有與UUID為1234對應(yīng)的名為external-1234, db的子數(shù)據(jù)庫;若有,說明之前掛載過該存儲設(shè)備A,則打開名為external, db的公共數(shù)據(jù)庫,以及與存儲設(shè)備A對應(yīng)的和名為external-1234, db的子數(shù)據(jù)庫;
[0149]可選地,若沒有與UUID為1234對應(yīng)的名為external-1234, db的子數(shù)據(jù)庫,則說明該存儲設(shè)備A是首次掛載,則先檢查現(xiàn)有的子數(shù)據(jù)庫的數(shù)量:當現(xiàn)有子數(shù)據(jù)庫的數(shù)量大于或等于指定數(shù)量(例如4)時,則對最近未使用的子數(shù)據(jù)庫進行刪除,然后創(chuàng)建與存儲設(shè)備A對應(yīng)的名為external-1234, db的子數(shù)據(jù)庫并保存,再打開該子數(shù)據(jù)庫和名為external,db的公共數(shù)據(jù)庫;當現(xiàn)有子數(shù)據(jù)庫的數(shù)量小于指定數(shù)量時,則直接創(chuàng)建與存儲設(shè)備A對應(yīng)的名為external-1234, db的子數(shù)據(jù)庫并保存,再打開該子數(shù)據(jù)庫和名為external, db的公共數(shù)據(jù)庫。
[0150]步驟S505, mediascanner驗證當前名為external-1234.db的子數(shù)據(jù)庫中的記錄的有效性。
[0151]具體地,可以根據(jù)查詢該子數(shù)據(jù)庫中的所有記錄的屬性來驗證。
[0152]其中,該屬性至少包括:屬性_data (文件的存放位置)和屬性IastModified (文件的最后修改時間)。有以下幾種情況:
[0153]若屬性_data所對應(yīng)的文件存在,并且IastModified沒有變化,說明存儲設(shè)備A中確實有該文件,則表示該記錄有效,繼續(xù)檢查下一條記錄。
[0154]若屬性_data所對應(yīng)的文件不存在,說明所屬存儲設(shè)備A中已經(jīng)沒有該文件,則表示該記錄無效,此時將該記錄刪除,繼續(xù)檢查下一條記錄。
[0155]若屬性_data所對應(yīng)的文件存在,但是IastModified有變化,說明該文件已被修改,該記錄保存的文件信息不正確了,也刪除該記錄,等待之后的掃描來對該文件的信息進行重新保存,繼續(xù)檢查下一條記錄。
[0156]步驟S506,遍歷存儲設(shè)備A中的每個文件,獲取存儲設(shè)備A中的每個文件的信息;
[0157]可選地,當遍歷得到一個文件,查看該子數(shù)據(jù)庫中是否有關(guān)于該文件的記錄;若沒有,則獲取該文件信息,并將獲取到的文件信息保存至名為external-1234, db的子數(shù)據(jù)庫中,然后繼續(xù)遍歷直到遍歷完成,若有,則繼續(xù)遍歷下一個文件。
[0158]名為external-1234, db的子數(shù)據(jù)庫,負責保存與存儲設(shè)備A對應(yīng)文件系統(tǒng)中的文件信息,由mediascanner控制,其它應(yīng)用程序app無法對它操作,其它app不可訪問;每個存儲設(shè)備上的文件系統(tǒng)對應(yīng)系統(tǒng)中的一個子數(shù)據(jù)庫;
[0159]步驟S507,遍歷完之后,查詢名為external-1234, db的子數(shù)據(jù)庫中關(guān)于存儲設(shè)備A的所有記錄,然后將查詢到的記錄插入至公共數(shù)據(jù)庫external, db中,供apk訪問;
[0160]步驟S508,結(jié)束掃描存儲設(shè)備A ;
[0161]步驟S509,啟動mediascanner對存儲設(shè)備B進行掃描;
[0162]步驟S510,獲取存儲設(shè)備B的ntfs文件系統(tǒng)的通用唯一標識符UUID為5678 ;
[0163]步驟S511,判斷系統(tǒng)中是否有與UUID為5678對應(yīng)的名為external-5678.db的子數(shù)據(jù)庫;若有,說明之前掛載過該存儲設(shè)備B,則打開名為external, db的公共數(shù)據(jù)庫,以及與存儲設(shè)備B對應(yīng)的名為external-5678, db的子數(shù)據(jù)庫;
[0164]若沒有與UUID為5678對應(yīng)的名為external-5678, db的子數(shù)據(jù)庫,說明該存儲設(shè)備B是首次掛載,則先檢查現(xiàn)有的子數(shù)據(jù)庫的數(shù)量:當現(xiàn)有子數(shù)據(jù)庫的數(shù)量大于或等于指定數(shù)量(例如6)時,則對最近未使用的子數(shù)據(jù)庫進行刪除,然后創(chuàng)建與存儲設(shè)備B對應(yīng)的名為external-5678, db的子數(shù)據(jù)庫并保存,再打開該子數(shù)據(jù)庫和名為external, db的公共數(shù)據(jù)庫;當現(xiàn)有子數(shù)據(jù)庫的數(shù)量小于指定數(shù)量時,則直接創(chuàng)建與存儲設(shè)備B對應(yīng)的名為external-5678, db的子數(shù)據(jù)庫并保存,再打開該子數(shù)據(jù)庫和名為external, db的公共數(shù)據(jù)庫。
[0165]名為external-5678, db的子數(shù)據(jù)庫,負責保存與存儲設(shè)備B對應(yīng)文件系統(tǒng)中的文件信息,由mediascanner控制,其它應(yīng)用程序app無法對它操作,其它app不可訪問;每個存儲設(shè)備上的文件系統(tǒng)對應(yīng)系統(tǒng)中的一個子數(shù)據(jù)庫;
[0166]名為external, db的公共數(shù)據(jù)庫,負責記錄所有已掛載存儲設(shè)備A和存儲設(shè)備B的文件系統(tǒng)的文件信息,方便app去訪問。
[0167]子數(shù)據(jù)庫和公共數(shù)據(jù)庫的表結(jié)構(gòu)相同。
[0168]步驟S512, mediascanner驗證當前名為external-5678.db的子數(shù)據(jù)庫中的記錄的有效性,可以根據(jù)查詢該子數(shù)據(jù)庫中的所有記錄的屬性來驗證,屬性至少包括:屬性_data (文件的存放位置)和屬性IastModified (文件的最后修改時間)。有以下幾種情況:
[0169]若屬性_data所對應(yīng)的文件存在,并且IastModified沒有變化,說明存儲設(shè)備B中確實有該文件,則表示該記錄有效,繼續(xù)檢查下一條記錄。
[0170]若屬性_data所對應(yīng)的文件不存在,說明所屬存儲設(shè)備B中已經(jīng)沒有該文件,則表示該記錄無效,此時將該記錄刪除,繼續(xù)檢查下一條記錄。
[0171]若屬性_data所對應(yīng)的文件存在,但是IastModified有變化,說明該文件已被修改,該記錄保存的文件信息不正確了,則刪除該記錄,等待之后的掃描來對該文件的信息進行重新保存,繼續(xù)檢查下一條記錄。
[0172]步驟S513,遍歷存儲設(shè)備B中的每個文件,獲取存儲設(shè)備B中的每個文件的信息;
[0173]可選地,當遍歷得到一個文件,查看該子數(shù)據(jù)庫中是否有關(guān)于該文件的記錄,若沒有,則獲取該文件信息,并將獲取到的文件信息保存至名為external-5678, db的子數(shù)據(jù)庫中,然后繼續(xù)遍歷直到遍歷完成,若有,則繼續(xù)遍歷下一個文件。
[0174]步驟S514,遍歷完之后,查詢名為external-5678, db的子數(shù)據(jù)庫中關(guān)于存儲設(shè)備B的所有記錄,然后將查詢到的記錄插入至公共數(shù)據(jù)庫external, db中,供apk訪問;
[0175]步驟S515,結(jié)束掃描存儲設(shè)備B。
[0176]可選的,當掃描完成,通知其它程序。
[0177]采用本發(fā)明實施例提供的方案,使用戶可以快速訪問到經(jīng)常在該andriod設(shè)備上使用的存儲設(shè)備中的文件信息,并且可以根據(jù)andriod SDK開發(fā)的apk不需要做修改就可以正常訪問數(shù)據(jù)庫,對于各種存儲設(shè)備具有很好的通用性。
[0178]在一些可選的實施例中,提供了一種實現(xiàn)文件掃描和保存的裝置。圖5是本發(fā)明實施例提供的一種實現(xiàn)文件掃描和保存的裝置的結(jié)構(gòu)示意圖。如圖5所示,該裝置包括:掃描模塊11、判別模塊12、驗證模塊13、遍歷模塊14、獲取文件信息模塊15和查詢模塊16 ;其中,
[0179]掃描模塊11,用于對掛載的存儲設(shè)備進行掃描,并獲取存儲設(shè)備的通用唯一標識符 UUID ;
[0180]判別模塊12,用于判斷系統(tǒng)中是否有與UUID對應(yīng)的子數(shù)據(jù)庫;若有,則打開公共數(shù)據(jù)庫,以及與存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫;
[0181]驗證模塊13,用于驗證與當前存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫中的記錄的有效性;[0182]遍歷模塊14,用于遍歷存儲設(shè)備中的每個文件;
[0183]獲取文件信息模塊15,用于獲取存儲設(shè)備中的每個文件的信息;和,
[0184]查詢模塊16,用于查詢子數(shù)據(jù)庫中關(guān)于該存儲設(shè)備的所有記錄,然后將查詢到的記錄插入公共數(shù)據(jù)庫中。
[0185]在一些可選的實施例中,如圖6所示,該裝置還包括創(chuàng)建模塊17 ;
[0186]判別模塊12,判別若沒有與UUID對應(yīng)的子數(shù)據(jù)庫,則先檢查現(xiàn)有子數(shù)據(jù)庫的數(shù)量;當現(xiàn)有子數(shù)據(jù)庫的數(shù)量大于指定數(shù)量時,則對最近未使用的子數(shù)據(jù)庫進行刪除,然后通知創(chuàng)建模塊17 ;當現(xiàn)有子數(shù)據(jù)庫的數(shù)量小于指定數(shù)量時,則直接通知創(chuàng)建模塊17 ;
[0187]創(chuàng)建模塊17,用于創(chuàng)建與存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫,并保存;
[0188]然后所述判別模塊,再打開公共數(shù)據(jù)庫,以及與創(chuàng)建模塊17創(chuàng)建的子數(shù)據(jù)庫。
[0189]其中,子數(shù)據(jù)庫,用于備份記錄一個對應(yīng)的存儲設(shè)備的文件信息,每個存儲設(shè)備上的文件系統(tǒng)對應(yīng)系統(tǒng)中的一個子數(shù)據(jù)庫;所述子數(shù)據(jù)庫僅由本裝置的系統(tǒng)進行操作和控制;
[0190]公共數(shù)據(jù)庫,用于記錄當前所有掛載的存儲設(shè)備的文件信息,還用于供其它應(yīng)用程序訪問和操作。
[0191]可選的,驗證模塊13,具體用于根據(jù)查詢子數(shù)據(jù)庫中的所有記錄的屬性來驗證當前子數(shù)據(jù)庫中的記錄的有效性,屬性至少包括:文件的存放位置和文件的最后修改時間。具體包括以下幾種情況:
[0192]若文件的存放位置屬性所對應(yīng)的文件存在,并且文件的最后修改時間沒有變化,說明存儲設(shè)備中確實有該文件,則表示該記錄有效,繼續(xù)檢查下一條記錄;
[0193]若文件的存放位置屬性所對應(yīng)的文件不存在,說明所屬存儲設(shè)備中已經(jīng)沒有該文件,則表示該記錄無效,此時將該記錄刪除,繼續(xù)檢查下一條記錄;
[0194]若文件的存放位置屬性所對應(yīng)的文件存在,但是文件的最后修改時間有變化,說明該文件已被修改,該記錄保存的文件信息不正確了,則刪除該記錄,等待之后的掃描來對該文件的信息進行重新保存,繼續(xù)檢查下一條記錄。
[0195]可選的,當遍歷模塊14,遍歷得到一個文件,查看該子數(shù)據(jù)庫中是否有關(guān)于該文件的記錄;若沒有,則獲取該文件信息,并將獲取到的文件信息保存至該子數(shù)據(jù)庫中,然后繼續(xù)遍歷直到遍歷完成,若有,則跳過獲取文件信息模塊,繼續(xù)遍歷下一個文件。
[0196]該裝置還可能包括:通知模塊18 (圖中未畫出),用于當掃描完成,通知其它程序。
[0197]如果同時掛載多個存儲設(shè)備,系統(tǒng)發(fā)出掛載廣播,掃描模塊11會根據(jù)收到的掛載的廣播,開始對每個存儲設(shè)備按掛載的順序執(zhí)行掃描;創(chuàng)建模塊17,針對每一個存儲設(shè)備分別對應(yīng)創(chuàng)建一個與該存儲設(shè)備的UUID號對應(yīng)的子數(shù)據(jù)庫,并存儲。
[0198]可選的,該裝置還包括卸載模塊19 (圖中未畫出),當移除或卸載存儲設(shè)備時,系統(tǒng)發(fā)出移除或卸載廣播,卸載模塊19收到移除或卸載廣播,刪除公共數(shù)據(jù)庫中所有關(guān)于該存儲設(shè)備的記錄,并且關(guān)閉與該存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫。
[0199]如果同時移除或卸載多個存儲設(shè)備,系統(tǒng)發(fā)出移除或卸載的廣播,卸載模塊19會根據(jù)收到的移除或卸載的廣播,開始按移除或卸載的順序刪除所述公共數(shù)據(jù)庫中所有關(guān)于每個存儲設(shè)備的記錄,并且關(guān)閉與每個被移除或卸載的存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫。
[0200]采用本發(fā)明實施例提供的方案,使用戶可以快速訪問到經(jīng)常在該andriod設(shè)備上使用的存儲設(shè)備中的文件信息,并且可以根據(jù)andriod SDK開發(fā)的apk不需要做修改就可以正常訪問數(shù)據(jù)庫,對于各種存儲設(shè)備具有很好的通用性。
[0201]除非另外具體陳述,術(shù)語比如處理、計算、運算、確定、顯示等等可以指一個或更多個處理或者計算系統(tǒng)、或類似設(shè)備的動作和/或過程,所述動作和/或過程將表示為處理系統(tǒng)的寄存器或存儲設(shè)備內(nèi)的物理(如電子)量的數(shù)據(jù)操作和轉(zhuǎn)換成為類似地表示為處理系統(tǒng)的存儲設(shè)備、寄存器或者其他此類信息存儲、發(fā)射或者顯示設(shè)備內(nèi)的物理量的其他數(shù)據(jù)。信息和信號可以使用多種不同的技術(shù)和方法中的任何一種來表示。例如,在貫穿上面的描述中提及的數(shù)據(jù)、指令、命令、信息、信號、比特、符號和碼片可以用電壓、電流、電磁波、磁場或粒子、光場或粒子或者其任意組合來表示。
[0202]應(yīng)該明白,公開的過程中的步驟的特定順序或?qū)哟问鞘纠苑椒ǖ膶嵗;谠O(shè)計偏好,應(yīng)該理解,過程中的步驟的特定順序或?qū)哟慰梢栽诓幻撾x本公開的保護范圍的情況下得到重新安排。所附的方法權(quán)利要求以示例性的順序給出了各種步驟的要素,并且不是要限于所述的特定順序或?qū)哟巍?br> [0203]在上述的詳細描述中,各種特征一起組合在單個的實施方案中,以簡化本公開。不應(yīng)該將這種公開方法解釋為反映了這樣的意圖,即,所要求保護的主題的實施方案需要清楚地在每個權(quán)利要求中所陳述的特征更多的特征。相反,如所附的權(quán)利要求書所反映的那樣,本發(fā)明處于比所公開的單個實施方案的全部特征少的狀態(tài)。因此,所附的權(quán)利要求書特此清楚地被并入詳細描述中,其中每項權(quán)利要求獨自作為本發(fā)明單獨的優(yōu)選實施方案。
[0204]本領(lǐng)域技術(shù)人員還應(yīng)當理解,結(jié)合本文的實施例描述的各種說明性的邏輯框、模塊、電路和算法步驟均可以實現(xiàn)成電子硬件、計算機軟件或其組合。為了清楚地說明硬件和軟件之間的可交換性,上面對各種說明性的部件、框、模塊、電路和步驟均圍繞其功能進行了一般地描述。至于這種功能是實現(xiàn)成硬件還是實現(xiàn)成軟件,取決于特定的應(yīng)用和對整個系統(tǒng)所施加的設(shè)計約束條件。熟練的技術(shù)人員可以針對每個特定應(yīng)用,以變通的方式實現(xiàn)所描述的功能,但是,這種實現(xiàn)決策不應(yīng)解釋為背離本公開的保護范圍。
[0205]結(jié)合本文的實施例所描述的方法或者算法的步驟可直接體現(xiàn)為硬件、由處理器執(zhí)行的軟件模塊或其組合。軟件模塊可以位于RAM存儲設(shè)備、閃存、ROM存儲設(shè)備、EPROM存儲設(shè)備、EEPROM存儲設(shè)備、寄存器、硬盤、移動磁盤、CD-ROM或者本領(lǐng)域熟知的任何其它形式的存儲介質(zhì)中。一種示例性的存儲介質(zhì)連接至處理器,從而使處理器能夠從該存儲介質(zhì)讀取信息,且可向該存儲介質(zhì)寫入信息。當然,存儲介質(zhì)也可以是處理器的組成部分。處理器和存儲介質(zhì)可以位于ASIC中。該ASIC可以位于用戶終端中。當然,處理器和存儲介質(zhì)也可以作為分立組件存在于用戶終端中。
[0206]對于軟件實現(xiàn),本申請中描述的技術(shù)可用執(zhí)行本申請所述功能的模塊(例如,過程、函數(shù)等)來實現(xiàn)。這些軟件代碼可以存儲在存儲設(shè)備單元并由處理器執(zhí)行。存儲設(shè)備單元可以實現(xiàn)在處理器內(nèi),也可以實現(xiàn)在處理器外,在后一種情況下,它經(jīng)由各種手段以通信方式耦合到處理器,這些都是本領(lǐng)域中所公知的。
[0207]上文的描述包括一個或多個實施例的舉例。當然,為了描述上述實施例而描述部件或方法的所有可能的結(jié)合是不可能的,但是本領(lǐng)域普通技術(shù)人員應(yīng)該認識到,各個實施例可以做進一步的組合和排列。因此,本文中描述的實施例旨在涵蓋落入所附權(quán)利要求書的保護范圍內(nèi)的所有這樣的改變、修改和變型。此外,就說明書或權(quán)利要求書中使用的術(shù)語“包含”,該詞的涵蓋方式類似于術(shù)語“包括”,就如同“包括,”在權(quán)利要求中用作銜接詞所解釋的那樣。此外,使用在權(quán)利要求書的說明書中的任何一個術(shù)語“或者”是要表示“非排它性的或者”。
【權(quán)利要求】
1.一種用于實現(xiàn)文件掃描和保存的方法,其特征在于,包括: 掛載存儲設(shè)備,并對該存儲設(shè)備其進行掃描; 獲取所述存儲設(shè)備的通用唯一標識符UUID ; 判斷是否有與所述UUID對應(yīng)的子數(shù)據(jù)庫;若有,則打開與所述存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫和公共數(shù)據(jù)庫; 驗證與當前存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫中的記錄的有效性; 遍歷所述存儲設(shè)備中的每個文件,獲取所述存儲設(shè)備中的每個文件的信息; 遍歷完之后,查詢所述子數(shù)據(jù)庫中關(guān)于該存儲設(shè)備的所有記錄,然后將查詢到的記錄插入所述公共數(shù)據(jù)庫中。
2.如權(quán)利要求1所述的方法,其特征在于,還包括: 判斷若沒有與所述UUID對應(yīng)的子數(shù)據(jù)庫,則先檢查現(xiàn)有子數(shù)據(jù)庫的數(shù)量; 當現(xiàn)有子數(shù)據(jù)庫的數(shù)量大于或等于指定數(shù)量時,則對最近未使用的子數(shù)據(jù)庫進行刪除,然后創(chuàng)建與所述存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫并保存,再打開與該子數(shù)據(jù)庫和公共數(shù)據(jù)庫; 當現(xiàn)有子數(shù)據(jù)庫的數(shù)量小于指定數(shù)量時,則直接創(chuàng)建與所述存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫并保存,再打開該子數(shù)據(jù) 庫和公共數(shù)據(jù)庫。
3.如權(quán)利要求1所述的方法,其特征在于,所述子數(shù)據(jù)庫,用于備份記錄一個對應(yīng)的存儲設(shè)備的文件信息;每個存儲設(shè)備上的文件系統(tǒng)對應(yīng)系統(tǒng)中的一個子數(shù)據(jù)庫;所述子數(shù)據(jù)庫僅由本系統(tǒng)進行操作和控制; 所述公共數(shù)據(jù)庫,用于記錄當前所有掛載的存儲設(shè)備的文件信息,還用于供其它應(yīng)用程序訪問和操作。
4.如權(quán)利要求1所述的方法,其特征在于,所述在掛載存儲設(shè)備之后,還包括: 系統(tǒng)發(fā)出掛載廣播; 掃描器收到所述掛載廣播后,對該存儲設(shè)備進行掃描。
5.如權(quán)利要求1所述的方法,其特征在于,所述驗證當前子數(shù)據(jù)庫中的記錄的有效性,是根據(jù)查詢子數(shù)據(jù)庫中的所有記錄的屬性進行驗證; 所述屬性至少包括:文件的存放位置和文件的最后修改時間。
6.如權(quán)利要求5所述的方法,其特征在于,還包括: 若文件的存放位置屬性所對應(yīng)的文件存在,并且所述文件的最后修改時間沒有變化,說明所述存儲設(shè)備中確實有該文件,則表示該記錄有效。
7.如權(quán)利要求5所述的方法,其特征在于,還包括: 若文件的存放位置屬性所對應(yīng)的文件不存在,說明所屬存儲設(shè)備中已經(jīng)沒有該文件,則表示該記錄無效,此時將該記錄刪除,繼續(xù)檢查下一條記錄。
8.如權(quán)利要求5所述的方法,其特征在于,還包括: 若文件的存放位置屬性所對應(yīng)的文件存在,但是所述文件的最后修改時間有變化,則刪除該記錄,等待之后的掃描來對該文件的信息進行重新保存,繼續(xù)檢查下一條記錄。
9.如權(quán)利要求1所述的方法,其特征在于,所述遍歷所述存儲設(shè)備中的每個文件,獲取所述存儲設(shè)備中的每個文件的信息,具體包括: 當遍歷得到一個文件,查看該子數(shù)據(jù)庫中是否有關(guān)于該文件的記錄,若沒有,則獲取該文件信息,并將獲取到的文件信息保存至該子數(shù)據(jù)庫中,然后繼續(xù)遍歷直到遍歷完成,若有,則繼續(xù)遍歷下一個文件。
10.如權(quán)利要求1所述的方法,其特征在于,還包括: 當掃描完成,通知其它程序。
11.如權(quán)利要求2所述的方法,其特征在于,如果同時掛載多個存儲設(shè)備,系統(tǒng)發(fā)出掛載廣播,掃描器會根據(jù)收到的掛載廣播,開始對每個存儲設(shè)備按掛載順序執(zhí)行掃描;并且針對每一個存儲設(shè)備分別對應(yīng)創(chuàng)建一個與其UUID號對應(yīng)的子數(shù)據(jù)庫,并存儲。
12.如權(quán)利要求1所述的方法,其特征在于,當移除或卸載所述存儲設(shè)備時,系統(tǒng)發(fā)出移除或卸載廣播,多媒體內(nèi)容提供器會根據(jù)收到的移除或卸載廣播,刪除所述公共數(shù)據(jù)庫中所有關(guān)于所述該存儲設(shè)備的記錄,并且關(guān)閉與該存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫。
13.如權(quán)利要求12所述的方法,其特征在于,如果同時移除或卸載多個存儲設(shè)備,系統(tǒng)發(fā)出移除或卸載的廣播,所述多媒體內(nèi)容提供器會根據(jù)收到的移除或卸載的廣播,開始按移除或卸載順序刪除所述公共數(shù)據(jù)庫中所有關(guān)于每個被移除或卸載的存儲設(shè)備的記錄,并且關(guān)閉與每個被移除或卸載的存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫。
14.如權(quán)利要求12所述的方法,其特征在于,當再次掛載所述存儲設(shè)備時,系統(tǒng)發(fā)出掛載廣播;掃描器接收到的掛載廣播后,只需要打開與該存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫,對該子數(shù)據(jù)庫中的信息進行更新,然后將該子數(shù)據(jù)庫中的記錄全部插入至所述公共數(shù)據(jù)庫中,供其它應(yīng)用程序apk訪問。
15.一種用于實現(xiàn)文件掃描和保存的裝置,其特征在于,包括: 掃描模塊,用于對掛載的存儲設(shè)備進行掃描,并獲取所述存儲設(shè)備的通用唯一標識符UUID ; 判別模塊,用于判斷系統(tǒng)中是否有與所述UUID對應(yīng)的子數(shù)據(jù)庫;若有,則打開與所述存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫和公共數(shù)據(jù)庫; 驗證模塊,用于驗證與當前存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫中的記錄的有效性; 遍歷模塊,用于遍歷所述存儲設(shè)備中的每個文件; 獲取文件信息模塊,用于獲取所述存儲設(shè)備中的每個文件的信息;和, 查詢模塊,用于查詢所述子數(shù)據(jù)庫中關(guān)于該存儲設(shè)備的所有記錄,然后將查詢到的記錄插入所述公共數(shù)據(jù)庫中。
16.如權(quán)利要求15所述的裝置,其特征在于,還包括創(chuàng)建模塊; 所述判別模塊,判斷若沒有與所述UUID對應(yīng)的子數(shù)據(jù)庫,則先檢查現(xiàn)有子數(shù)據(jù)庫的數(shù)量;當現(xiàn)有子數(shù)據(jù)庫的數(shù)量大于或等于指定數(shù)量時,則對最近未使用的子數(shù)據(jù)庫進行刪除,然后通知創(chuàng)建模塊;當現(xiàn)有子數(shù)據(jù)庫的數(shù)量小于指定數(shù)量時,則直接通知創(chuàng)建模塊; 所述創(chuàng)建模塊,用于創(chuàng)建與所述存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫,并保存; 所述判別模塊,再打開所述創(chuàng)建模塊創(chuàng)建的的子數(shù)據(jù)庫和公共數(shù)據(jù)庫。
17.如權(quán)利要求15所述的裝置,其特征在于,所述子數(shù)據(jù)庫,用于備份記錄一個對應(yīng)的存儲設(shè)備的文件信息,每個存儲設(shè)備上的文件系統(tǒng)對應(yīng)系統(tǒng)中的一個子數(shù)據(jù)庫;所述子數(shù)據(jù)庫僅由本裝置的系統(tǒng)進行操作和控制; 所述公共數(shù)據(jù)庫,用于記錄當前所有掛載的存儲設(shè)備的文件信息,還用于供其它應(yīng)用程序訪問和操作。
18.如權(quán)利要求15所述的裝置,其特征在于,所述驗證模塊,是根據(jù)查詢子數(shù)據(jù)庫中的所有記錄的屬性來驗證當前子數(shù)據(jù)庫中的記錄的有效性; 所述屬性至少包括:文件的存放位置和文件的最后修改時間。
19.如權(quán)利要求18所述的裝置,其特征在于,還包括: 若文件的存放位置屬性所對應(yīng)的文件存在,并且所述文件的最后修改時間沒有變化,說明所述存儲設(shè)備中確實有該文件,則表示該記錄有效。
20.如權(quán)利要求18所述的裝置,其特征在于,還包括: 若文件的存放位置屬性所對應(yīng)的文件不存在,說明所屬存儲設(shè)備中已經(jīng)沒有該文件,則表示該記錄無效,此時將該記錄刪除,繼續(xù)檢查下一條記錄。
21.如權(quán)利要求18所述的裝置,其特征在于,還包括: 若文件的存放位置屬性所對應(yīng)的文件存在,但是所述文件的最后修改時間有變化,則刪除該記錄,等待之后的掃描來對該文件的信息進行重新保存,繼續(xù)檢查下一條記錄。
22.如權(quán)利要求15所述的裝置,其特征在于,當所述遍歷模塊遍歷得到一個文件,查看該子數(shù)據(jù)庫中是否有關(guān)于該文件的記錄;若沒有,則獲取該文件信息,并將獲取到的文件信息保存至該子數(shù)據(jù)庫中,然后繼續(xù)遍歷直到遍歷完成;若有,則跳過獲取文件信息模塊,繼續(xù)遍歷下一個文件。
23.如權(quán)利要求15所述的裝置,其特征在于,還包括: 通知模塊,用于當掃描完成,通知其它程序。
24.如權(quán)利要求16所述的裝置,其特征在于,如果同時掛載多個存儲設(shè)備,系統(tǒng)發(fā)出掛載廣播,所述掃描模塊會根據(jù)收到的掛載的廣播,開始對每個存儲設(shè)備按掛載順序執(zhí)行掃描; 所述創(chuàng)建模塊,針對每個存儲設(shè)備分別對應(yīng)創(chuàng)建一個與該存儲設(shè)備的UUID號對應(yīng)的子數(shù)據(jù)庫,并存儲。
25.如權(quán)利要求15所述的裝置,其特征在于,還包括卸載模塊; 當移除或卸載所述存儲設(shè)備時,系統(tǒng)發(fā)出移除或卸載廣播,所述卸載模塊收到移除或卸載廣播,刪除所述公共數(shù)據(jù)庫中所有關(guān)于所述該存儲設(shè)備的記錄,并且關(guān)閉與該存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫。
26.如權(quán)利要求25所述的裝置,其特征在于,如果同時移除或卸載多個存儲設(shè)備,系統(tǒng)發(fā)出移除或卸載的廣播,所述卸載模塊會根據(jù)收到的移除或卸載的廣播,開始按移除或卸載順序刪除所述公共數(shù)據(jù)庫中所有關(guān)于每個存儲設(shè)備的記錄,并且關(guān)閉與每個存儲設(shè)備對應(yīng)的子數(shù)據(jù)庫。
【文檔編號】G06F17/30GK103838782SQ201210490809
【公開日】2014年6月4日 申請日期:2012年11月27日 優(yōu)先權(quán)日:2012年11月27日
【發(fā)明者】不公告發(fā)明人 申請人:廣東新岸線計算機系統(tǒng)芯片有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1