鸿蒙(API 12 Beta3版)【使用MediaAssetManager请求媒体资源(C/C++)】Media Library Kit媒体文件管理服务
使用MediaAssetManager可以实现请求媒体资源到目标沙箱路径,本开发指导将以请求一张图片作为示例,向开发者讲解MediaAssetManager相关功能。
请求图片资源的全流程包含:创建MediaAssetManager,设置请求资源,请求图片资源,取消本次请求(可选)。
开发步骤及注意事项
在CMake脚本中链接动态库
target_link_libraries(sample PUBLIC libmedia_asset_manager.so)
开发者通过引入[media_asset_manager.h]和[media_asset_base_capi.h]头文件,使用MediaAssetManager相关API。
说明
开发前,需要参考[开发准备],申请ohos.permission.READ_IMAGEVIDEO 权限。
- 创建实例:OH_MediaAssetManager_Create()。
- 设置资源:设置资源请求回调、设置资源请求策略、设置源图片Uri和目标Uri,
- 请求图片资源:调用OH_MediaAssetManager_RequestImageForPath()请求图片资源到目标Uri。
- 取消请求:调用OH_MediaAssetManager_CancelRequest()。(可选)
完整示例
#include "napi/native_api.h"
#include "multimedia/media_library/media_asset_base_capi.h"
#include "multimedia/media_library/media_asset_manager_capi.h"
#include "hilog/log.h"
#include <stdio.h>
#include <string.h>
const char ERROR_REQUEST_ID[UUID_STR_MAX_LENGTH] = "00000000-0000-0000-0000-000000000000";
// 资源请求回调
void OnDataPrepared(int32_t result, MediaLibrary_RequestId requestIdStruct)
{
printf("OnDataPrepared requestId: %s result: %d\n", requestIdStruct.requestId, result);
}
int main()
{
// 创建MediaAssetManager实例
OH_MediaAssetManager *manager = OH_MediaAssetManager_Create();
if (manager == nullptr) {
// 处理异常。
printf("Get MediaAssetManager failed.\n");
} else {
// 设置资源请求回调
OH_MediaLibrary_OnDataPrepared callback = OnDataPrepared;
// 设置资源请求策略
MediaLibrary_RequestOptions options;
options.deliveryMode = MEDIA_LIBRARY_HIGH_QUALITY_MODE;
// 预置图片资源Uri,默认为高质量图片。注:以下Uri是示例,开发者需根据实际情况创建或获取
const char *srcUri = "file://media/Photo/87/VID_1712195295_025/request_image_src.jpg";
// 提供目标路径Uri。注:以下Uri是示例,开发者需根据实际情况创建或获取
const char *destUri = "file://media/Photo/9/IMG_1712195237_008/request_image_dest.jpg";
// 将图片资源请求到目标路径
MediaLibrary_RequestId requestIdStruct = OH_MediaAssetManager_RequestImageForPath(manager, srcUri,
options, destUri, callback);
if (strcmp(requestIdStruct.requestId, ERROR_REQUEST_ID) == 0) {
// 处理异常
printf("Request image failed requestId:%s\n", requestIdStruct.requestId);
} else {
// 请求成功,打印请求Id
printf("Request image success, requestId: %s\n", requestIdStruct.requestId);
// 调用CancelRequest接口,用来取消尚在处理中的请求
// 注:OH_MediaAssetManager_CancelRequest不是必须流程,开发者可根据实际情况选择是否调用该接口来取消尚未回调返回的资源请求
bool ret = OH_MediaAssetManager_CancelRequest(manager, requestId);
}
}
return 0;
}
最后呢
很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。
而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点
如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。
针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。
- 《鸿蒙 (OpenHarmony)开发学习视频》
- 《鸿蒙生态应用开发V2.0白皮书》
- 《鸿蒙 (OpenHarmony)开发基础到实战手册》
- OpenHarmony北向、南向开发环境搭建
- 《鸿蒙开发基础》
- 《鸿蒙开发进阶》
- 《鸿蒙开发实战》
鸿蒙开发文件前往:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md自取
总结
鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。
并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿
更多推荐
所有评论(0)