巴延興
深圳開(kāi)鴻數(shù)字產(chǎn)業(yè)發(fā)展有限公司
os框架開(kāi)發(fā)工程師
1.MediaLibrary介紹
OpenAtom OpenHarmony(以下簡(jiǎn)稱“OpenHarmony”)MediaLibrary媒體庫(kù)提供了一系列易用的接口用于獲取媒體文件元數(shù)據(jù)信息。MediaLibrary接口是OpenHarmony系統(tǒng)內(nèi)部使用接口,不是外部三方應(yīng)用使用的接口。
MediaLibrary的功能支持掃描設(shè)備中所有媒體文件的能力,為相冊(cè)、音視頻播放器、文件管理器等應(yīng)用提供統(tǒng)一的媒體元數(shù)據(jù)信息操作接口,目前可實(shí)現(xiàn)的具體能力如下:
● 查詢圖片和視頻相冊(cè)
● 媒體文件操作如創(chuàng)建、重命名、拷貝和刪除
● 相冊(cè)操作如創(chuàng)建、重命名和刪除
MediaLibrary媒體庫(kù)代碼倉(cāng)的位置:foundation/multimedia/media_library
2.代碼結(jié)構(gòu)
NAPI部分實(shí)現(xiàn)了媒體資源的查詢、相冊(cè)增刪改查的實(shí)現(xiàn)及JS接口。
Native部分:
(1)media_library_helper:
主要提供了資源的設(shè)置和創(chuàng)建功能,比如相冊(cè)的操作、縮略圖操作等,主要涉及到資源文件或者文件夾的創(chuàng)建。
(2)media_library_manager:
主要對(duì)媒體庫(kù)的相關(guān)數(shù)據(jù)庫(kù)進(jìn)行操作。
(3)media_scanner:
media_library/frameworks/innerkitsimpl/media_scanner中的代碼沒(méi)有添加到編譯系統(tǒng)中,OpenHarmony 3.2 Beta版本的掃描代碼主要放在media_library/frameworks/services/media_scanner目錄中。
(4)medialibrary_data_extension:
該目錄中涉及到一些C++源碼和Hap包的應(yīng)用代碼,目前的掃描、截圖等流程沒(méi)有涉及到本目錄的內(nèi)容。
3.對(duì)外接口
getPublicDirectory 查看公共目錄
根據(jù)參數(shù)傳遞的目錄類型返回不同類型媒體庫(kù)的相對(duì)目錄。例如:"Cameras/"、"Videos/"、"Pictures/"、"Audios/"、"Documents/"和"Downloads/".
getFileAssets 獲取文件資源
調(diào)用DataShareHelper的Query查詢接口,獲取文件資源,最終回調(diào)用JsDataShareExtAbility的Query接口實(shí)現(xiàn)。
getAlbums 獲取相冊(cè)
查詢媒體中的相冊(cè)目錄信息。
createAsset 創(chuàng)建資源
調(diào)用DataShareHelper提供的Insert()接口插入數(shù)據(jù)庫(kù),傳入的uri通過(guò)“create_asset”字符表示創(chuàng)建數(shù)據(jù)資源。
deleteAsset 刪除資源
調(diào)用DataShareHelper提供的Insert()接口插入數(shù)據(jù)庫(kù),傳入的uri通過(guò)“delete_asset”字符表示刪除數(shù)據(jù)資源。
4. 媒體庫(kù)相關(guān)服務(wù)
OpenHarmony 3.2 Beta版本的目錄結(jié)構(gòu)進(jìn)行了比較大的調(diào)整,將Services目錄放到了frameworks路徑下,并且相比3.1 Release版本去掉了IPC調(diào)用機(jī)制。目前,Services目錄下的media_library_data_share和media_thumbnail里面的文件內(nèi)容為空,后續(xù)會(huì)完善。
5. 媒體庫(kù)相關(guān)數(shù)據(jù)庫(kù)
媒體庫(kù)操作的數(shù)據(jù)是在/data/app/el2/100/database/com.ohos.medialibrary.medialibrarydata/media_library.db目錄下。這是SQLite3數(shù)據(jù)庫(kù)的文件,可以使用SqliteManager軟件打開(kāi),主要看數(shù)據(jù)庫(kù)的兩部分:
第一部分是Files表數(shù)據(jù)。
Files表格字段:
第二部分是VIEWS中的幾個(gè)表,比如相冊(cè)查詢、圖片查詢、視頻查詢。
6. 代碼流程
截屏流程
截屏App通過(guò)調(diào)用saveImage方法來(lái)進(jìn)行截屏圖片的保存,這個(gè)方法通過(guò)@ohos.multimedia.mediaLibrary的getMediaLibrary接口獲取到MediaLibrary,調(diào)用它的接口會(huì)調(diào)用到MediaLibraryNapi提供的接口,這個(gè)對(duì)象是連接JS和Native的橋梁。
首先通過(guò)getPublicDirectory獲取到相對(duì)路徑,然后通過(guò)createAsset創(chuàng)建資源返回fileAsset,再通過(guò)fileAsset對(duì)文件進(jìn)行操作(將jpegData數(shù)據(jù)寫(xiě)入文件),最后關(guān)閉文件,完成截屏圖片的保存。
啟動(dòng)圖庫(kù)流程
圖庫(kù)通過(guò)MediaLibraryNapi的getFileAssets接口獲取文件資源,最終返回pixelMap給應(yīng)用使用。
媒體文件掃描流程
MediaLibraryDataManager的InitMediaLibraryMgr接口中最終會(huì)調(diào)用ScanDir來(lái)進(jìn)行媒體文件掃描,這接口調(diào)用到frameworks/services/media_scanner目錄下對(duì)應(yīng)的實(shí)現(xiàn)。
7. 總結(jié)
本文主要介紹了OpenHarmony 3.2 Beta多媒體子系統(tǒng)的媒體庫(kù)模塊,本模塊的接口暫不提供外部三方應(yīng)用使用,僅提供OpenHarmony系統(tǒng)內(nèi)部使用。相比于OpenHarmony3.1 Release版本,OpenHarmony 3.2 Beta版本的目錄結(jié)構(gòu)進(jìn)行了比較大的調(diào)整,相關(guān)功能期待廣大開(kāi)發(fā)者持續(xù)加入并完善。
審核編輯:湯梓紅
-
接口
+關(guān)注
關(guān)注
33文章
8575瀏覽量
151014 -
多媒體
+關(guān)注
關(guān)注
0文章
496瀏覽量
36975 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3713瀏覽量
16254
原文標(biāo)題:OpenHarmony 3.2 Beta源碼分析之MediaLibrary
文章出處:【微信號(hào):gh_15d2f062a168,微信公眾號(hào):深開(kāi)鴻】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論