本技術(shù)涉及數(shù)據(jù)處理,具體涉及一種車機媒體文件讀取方法、裝置、電子設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、在基于android系統(tǒng)的車載中控系統(tǒng)中,usb媒體文件瀏覽查看是一個常見的多媒體娛樂功能。目前相關(guān)技術(shù)中,媒體文件瀏覽功能主要是基于android系統(tǒng)中mediaprovider模塊提供的媒體文件信息提取和查詢功能來實現(xiàn)。
2、然而,mediaprovider通過維護一個數(shù)據(jù)庫來索引系統(tǒng)內(nèi)外存儲(包括usb設(shè)備)中的媒體文件,如音樂、視頻、圖片等。然而,這種設(shè)計在處理大容量存儲設(shè)備(如u盤)時顯得尤為吃力。每當新的存儲設(shè)備被連接,mediaprovider都需要執(zhí)行一次全面的掃描操作,這些操作都是io密集型的,極大地消耗了系統(tǒng)資源。
3、當u盤插入時,如果u盤中有較多媒體文件時,由于對大量的大文件的io操作,會導致媒體文件的讀取速度非常慢,經(jīng)測試如果有2萬個左右音視頻時,讀取時間甚至會達到10分鐘以上。
技術(shù)實現(xiàn)思路
1、鑒于以上所述相關(guān)技術(shù)的缺點,本技術(shù)提供一種車機媒體文件讀取方法、裝置、電子設(shè)備及存儲介質(zhì),以解決車機媒體文件讀取較慢的技術(shù)問題。
2、本技術(shù)提供了一種車機媒體文件讀取方法,所述車機媒體文件讀取方法包括:對車機的外部存儲掛載狀態(tài)進行監(jiān)聽,若所述外部存儲掛載狀態(tài)為已掛載,則獲取掛載的外部存儲器的根目錄路徑;基于所述根目錄路徑對所述外部存儲器進行過濾掃描,得到過濾掃描結(jié)果列表,所述過濾掃描結(jié)果列表包括多個文件格式為預(yù)設(shè)格式、文件大小大于預(yù)設(shè)內(nèi)存閾值且隱藏狀態(tài)為非隱藏的媒體文件;根據(jù)所述過濾掃描結(jié)果列表對外部存儲器進行媒體信息提取,并將提取到的媒體信息用于車機屏幕顯示和寫入本地數(shù)據(jù)庫中。
3、于本技術(shù)的一實施例中,基于所述根目錄路徑對所述外部存儲器進行過濾掃描,得到過濾掃描結(jié)果列表包括:根據(jù)所述根目錄路徑得到項目列表和項目數(shù)量;基于項目數(shù)量和預(yù)設(shè)掃描線程數(shù)量得到每個線程的掃描步長;根據(jù)所述掃描步長和所述項目列表對每個線程分配掃描任務(wù)列表,所述掃描任務(wù)列表包括每個線程掃描的起始項目位置和結(jié)束項目位置,并基于所述預(yù)設(shè)掃描線程數(shù)量設(shè)置同步計數(shù)器對每個線程進行監(jiān)控;當有一個線程完成掃描任務(wù),則所述同步計數(shù)器減1,直到所述同步計數(shù)器計數(shù)完成,則完成對所述外部存儲器進行過濾掃描
4、于本技術(shù)的一實施例中,基于所述根目錄路徑對所述外部存儲器進行過濾掃描,得到過濾掃描結(jié)果列表還包括:所述線程基于所述起始項目位置開始對掃描任務(wù)列表進行遍歷,判斷當前遍歷項目的項目類型;若所述當前遍歷項目的項目類型為文件,則獲取所述文件的文件格式、文件大小和隱藏狀態(tài);若所述文件的文件格式為所述預(yù)設(shè)格式,所述文件大小大于所述預(yù)設(shè)內(nèi)存閾值,且所述文件的隱藏狀態(tài)為非隱藏,則將所述文件作為媒體文件,并將所述媒體文件添加至所述過濾掃描結(jié)果列表;若所述當前遍歷項目的項目類型為文件夾,則獲取所述文件夾的隱藏狀態(tài);若所述文件夾的隱藏狀態(tài)為非隱藏,則將所述文件夾作為待掃描文件夾;對所述待掃描文件夾進行遍歷,將所述待掃描文件夾中的媒體文件添加至所述過濾掃描結(jié)果列表,將所述待掃描文件夾中隱藏狀態(tài)為非隱藏的文件夾作為新的待掃描文件夾,直至對所有所述待掃描文件夾完成遍歷。
5、于本技術(shù)的一實施例中,所述車機媒體文件讀取方法還包括:對所述車機的掛載監(jiān)聽器進行初始化操作,所述掛載監(jiān)聽器用于監(jiān)聽和查詢所述車機的外部存儲掛載狀態(tài);若所述掛載監(jiān)聽器監(jiān)聽到新增外部存儲掛載消息或查詢到已掛載所述外部存儲器,則將所述外部存儲掛載狀態(tài)設(shè)置為已掛載;所述掛載監(jiān)聽器基于所述外部存儲器的掛載廣播得到所述外部存儲器的設(shè)備信息,所述設(shè)備信息包括設(shè)備類型;基于所述設(shè)備類型對所述外部存儲器進行篩選,基于所述設(shè)備類型為預(yù)設(shè)類型的所述外部存儲器的根目錄路徑對所述設(shè)備類型為預(yù)設(shè)類型的外部存儲器進行過濾掃描。
6、于本技術(shù)的一實施例中,所述過濾掃描結(jié)果列表包括所述媒體文件及所述媒體文件對應(yīng)的文件信息,所述文件信息至少包括文件名稱、文件路徑、文件格式、文件大小、最近修改時間。
7、于本技術(shù)的一實施例中,根據(jù)所述過濾掃描結(jié)果列表對外部存儲器進行媒體信息提取包括:根據(jù)所述過濾掃描結(jié)果列表得到媒體數(shù)量;基于媒體數(shù)量和預(yù)設(shè)提取線程數(shù)量得到每個線程的提取步長;根據(jù)所述提取步長和所述過濾掃描結(jié)果列表對每個線程分配提取任務(wù)列表,所述提取任務(wù)列表包括每個線程提取的起始媒體位置和結(jié)束媒體位置,并基于所述預(yù)設(shè)提取線程數(shù)量設(shè)置同步計數(shù)器對每個線程進行監(jiān)控;當有一個線程完成提取任務(wù),則所述同步計數(shù)器減1,直到所述同步計數(shù)器計數(shù)完成,則完成對外部存儲器進行媒體信息提取。
8、于本技術(shù)的一實施例中,對每個線程分配提取任務(wù)列表,所述提取任務(wù)列表包括每個線程提取的起始媒體位置和結(jié)束媒體位置還包括:獲取所述車機屏幕的當前展示列表,基于所述當前展示列表對每個線程分配提取任務(wù)列表,將所述當前展示列表中的媒體文件分配給每個線程;當所述多個線程的完成提取數(shù)量超過預(yù)設(shè)數(shù)量閾值后,將提取完成的媒體信息返回以使所述車機屏幕對所述當前展示列表的媒體信息進行顯示。
9、本技術(shù)的實施例還提供一種車機媒體文件讀取裝置,所述車機媒體文件讀取裝置包括:監(jiān)聽讀取模塊,用于對車機的外部存儲掛載狀態(tài)進行監(jiān)聽,若所述外部存儲掛載狀態(tài)為已掛載,則獲取掛載的外部存儲器的根目錄路徑;過濾掃描模塊,用于基于所述根目錄路徑對所述外部存儲器進行過濾掃描,得到過濾掃描結(jié)果列表,所述過濾掃描結(jié)果列表包括多個文件格式為預(yù)設(shè)格式、文件大小大于預(yù)設(shè)內(nèi)存閾值且隱藏狀態(tài)為非隱藏的媒體文件;信息提取模塊,用于根據(jù)所述過濾掃描結(jié)果列表對外部存儲器進行媒體信息提取,并將提取到的媒體信息用于車機屏幕顯示和寫入本地數(shù)據(jù)庫中。
10、本技術(shù)的實施例還提供一種電子設(shè)備,所述電子設(shè)備包括:一個或多個處理器;存儲裝置,用于存儲一個或多個程序,當所述一個或多個程序被所述一個或多個處理器執(zhí)行時,使得所述電子設(shè)備實現(xiàn)如上述各實施例中任一所述的車機媒體文件讀取方法。
11、本技術(shù)的實施例還提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,當所述計算機程序被計算機的處理器執(zhí)行時,使計算機執(zhí)行如上述各實施例中任一所述的車機媒體文件讀取方法。
12、本技術(shù)的有益效果:一種車機媒體文件讀取方法、裝置、電子設(shè)備及存儲介質(zhì),該方法包括對車機的外部存儲掛載狀態(tài)進行監(jiān)聽,若外部存儲掛載狀態(tài)為已掛載,則獲取掛載的外部存儲器的根目錄路徑,基于根目錄路徑對外部存儲器進行過濾掃描,得到過濾掃描結(jié)果列表,過濾掃描結(jié)果列表包括多個文件格式為預(yù)設(shè)格式、文件大小大于預(yù)設(shè)內(nèi)存閾值且隱藏狀態(tài)為非隱藏的媒體文件,根據(jù)過濾掃描結(jié)果列表對外部存儲器進行媒體信息提取,并將提取到的媒體信息用于車機屏幕顯示和寫入本地數(shù)據(jù)庫中,通過對外部存儲器基于根目錄路徑進行過濾掃描,以減少在提取媒體信息時遍歷媒體文件的時間,從而在首次接入外部存儲器時可以更快的瀏覽媒體文件,提升用戶體驗。
13、應(yīng)當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本技術(shù)。