OpenHarmony 3.2 Beta源码分析之MediaLibrary
创始人
2025-01-07 23:03:59
0

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版本的目录结构进行了比较大的调整,相关功能期待广大开发者持续加入并完善。

写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:https://qr21.cn/FV7h05

相关内容

热门资讯

一分钟开挂!传送屋有没有挂,约... 一分钟开挂!传送屋有没有挂,约局吧辅助器下载,详细教程-2026最新版本1.约局吧辅助器下载 ai辅...
第六分钟了解!微信小程序微乐房... 第六分钟了解!微信小程序微乐房间怎么开挂(辅助挂)切实是真的挂,安装教程(了解有挂)-哔哩哔哩1、微...
7分钟插件!随意玩h5透视辅助... 7分钟插件!随意玩h5透视辅助,决战卡五星辅助,真是有挂(有挂教程)-哔哩哔哩一、随意玩h5透视辅助...
透视挂透视!竞技联盟破解版最新... 透视挂透视!竞技联盟破解版最新版,pokemomo辅助软件,指引教程(有挂教学)-哔哩哔哩1、起透看...
第8分钟开挂!yy比鸡辅助真的... 第8分钟开挂!yy比鸡辅助真的假的,牛总管辅助免费版,辅助教程-2026最新版本1、打开软件启动之后...
第九分钟详情!情怀游戏字牌辅助... 第九分钟详情!情怀游戏字牌辅助(辅助挂)原来有挂,解密教程(有挂猫腻)-哔哩哔哩1、金币登录送、破产...
第八分钟插件!新众乐辅助,情怀... 第八分钟插件!新众乐辅助,情怀娱乐辅助器,一直是有挂(新版有挂)-哔哩哔哩1、金币登录送、破产送、升...
透视神器!wepoker辅助透... 透视神器!wepoker辅助透视,hhpoker底牌透视脚本,模块教程(有挂分享)-哔哩哔哩1、hh...
第4分钟开挂!微信江苏小程序游... 第4分钟开挂!微信江苏小程序游戏破解器下载,科乐填大坑技巧,详细教程-2026最新版本亲,关键说明,...
第3分钟解密!衢州都莱辅助器开... 第3分钟解密!衢州都莱辅助器开挂(辅助挂)好像真的是有挂,力荐教程(有挂秘笈)-哔哩哔哩1、衢州都莱...