* Copyright (c) 2025 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "napi/native_api.h"
#include "multimedia/media_library/media_asset_base_capi.h"
#include "multimedia/media_library/media_asset_manager_capi.h"
#include <cstdio>
#include <cstring>
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);
}
static napi_value GetBoolean(napi_env env, bool value)
{
napi_value val;
napi_get_boolean(env, value, &val);
return val;
}
static napi_value RequestMediaAssets(napi_env env, napi_callback_info info)
{
OH_MediaAssetManager *manager = OH_MediaAssetManager_Create();
if (manager == nullptr) {
printf("Get MediaAssetManager failed.\n");
return GetBoolean(env, false);
} else {
OH_MediaLibrary_OnDataPrepared callback = OnDataPrepared;
MediaLibrary_RequestOptions options;
options.deliveryMode = MEDIA_LIBRARY_HIGH_QUALITY_MODE;
const char *srcUri = "file://media/Photo/87/VID_1712195295_025/request_image_src.jpg";
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);
return GetBoolean(env, false);
} else {
printf("Request image success, requestId: %s\n", requestIdStruct.requestId);
bool ret = OH_MediaAssetManager_CancelRequest(manager, requestIdStruct);
return GetBoolean(env, true);
}
}
}
EXTERN_C_START
static napi_value Init(napi_env env, napi_value exports) {
napi_property_descriptor desc[] = {
{"requestMediaAssets", nullptr, RequestMediaAssets, nullptr, nullptr,
nullptr, napi_default, nullptr},
};
napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
return exports;
}
EXTERN_C_END
static napi_module demoModule = {
.nm_version = 1,
.nm_flags = 0,
.nm_filename = nullptr,
.nm_register_func = Init,
.nm_modname = "entry",
.nm_priv = ((void*)0),
.reserved = { 0 },
};
extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
{
napi_module_register(&demoModule);
}