OpenHarmony 3.2 Beta多媒体子系统的媒体库模块

巴延兴
深圳开鸿数字产业发展有限公司
os框架开发工程师
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版本的目录结构进行了比较大的调整,相关功能期待广大开发者持续加入并完善。


激光焊接技术的特点有哪些
这些技术的机器人或自动化企业可能成为行业的独角兽
Puzzel新版本云联络中心解决方案提升社交媒体功能
信步科技SV-1900-DS嵌入式主板
如何降低便携式设备的背光源的功率消耗
OpenHarmony 3.2 Beta多媒体子系统的媒体库模块
黑莓重回大众视野:因为它的车载操作系统QNX
使用Flash Magic工具烧录LPC系列MCU(UART/USB/SWD接口)
利用臭氧微泡清洗半导体晶片
JavaScript的语法和基本功能
天线基础知识
京东上线机器视觉智能批量入库系统—秒收,效率提升了10倍以上
创维油烟机质量如何:吸净油烟、让厨房洁净如新
台积电三季度营收大涨!破纪录!
阿里巴巴的云计算业务超过亚马逊云服务和微软Azure
提供新的人机接口实现方式以减少大量需求资源
光庭信息斩获“2023第五届金辑奖中国汽车新供应链百强”
体感试衣镜为你打造一个快速、真实、互动的试衣体验
求一种压控振荡器的设计与仿真方案
最畅销科技产品排行榜:iPhone 4S居首