关于openharmony:OpenHarmony-32-Beta源码分析之MediaLibrary

8次阅读

共计 2197 个字符,预计需要花费 6 分钟才能阅读完成。

1.MediaLibrary 介绍
OpenAtom OpenHarmony(以下简称“OpenHarmony”)MediaLibrary 媒体库提供了一系列易用的接口用于获取媒体文件元数据信息。MediaLibrary 接口是 OpenHarmony 零碎外部应用接口,不是内部三方利用应用的接口。
MediaLibrary 的性能反对扫描设施中所有媒体文件的能力,为相册、音视频播放器、文件管理器等利用提供对立的媒体元数据信息操作接口,目前可实现的具体能力如下:
● 查问音频、视频和图片文件元数据信息
● 查问图片和视频相册
● 媒体文件操作如创立、重命名、拷贝和删除
● 相册操作如创立、重命名和删除
MediaLibrary 媒体库代码仓的地位:foundation/multimedia/media_library

2. 代码构造

代码的框架次要分为 Napi 和 Native 两局部。
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 版本的目录构造进行了比拟大的调整,相干性能期待宽广开发者继续退出并欠缺。

正文完
 0