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