跳到主要内容

接入全局取色

接入全局取色功能,用户可以使用手指或者手写笔操作取色器在屏幕上移动,在目标位置抬起手指/抬起手写笔,会生成该位置色值对应的图像信息。

场景介绍

在应用中拉起全局取色,效果如下:

支持获取当前屏幕上选中位置的色值和色域空间。

限制与约束

全局取色能力支持设备:Tablet、PC/2in1,并且从5.1.1(19)版本开始,新增支持设备:Phone(只支持部分机型)。

接口说明

名称描述
int32_t HMS_GCP_StartColorPicker (int32_t initialPosX, int32_t initialPosY, HMS_GCP_OnResult onResultCallback, void *userData)启动取色器。此API用于启动取色器,在取色器移动时不显示色值。
int32_t HMS_GCP_StartColorPickerWithColorValue (int32_t initialPosX, int32_t initialPosY, HMS_GCP_OnResult onResultCallback, void *userData)启动取色器。此API用于启动取色器,在取色器移动时显示色值。

接入步骤

在 CMake 脚本中链接动态库

target_link_libraries(entry PUBLIC libace_napi.z.so libcolorpicker_ndk.z.so libhilog_ndk.z.so)

导入模块

#include "color_picker/native_gcp_api.h"
#include "hilog/log.h"

示例代码

native_gcp_api.h提供HMS_GCP_StartColorPicker()和HMS_GCP_StartColorPickerWithColorValue()两种方式启动全局取色功能。

通过调用HMS_GCP_StartColorPicker(),实现启动取色器。

该启动方法不支持实时显示色值。

void onSuccessCallback(void *userData, HMS_GCP_PickedColorInfo pickedColorInfo, const int32_t code) {
OH_LOG_Print(LOG_APP, LOG_INFO, 0x0000, "penkit", "picked code is: %{public}d", code);
OH_LOG_Print(LOG_APP, LOG_INFO, 0x0000, "penkit", "picked Red is: %{public}d", pickedColorInfo.color.red);
OH_LOG_Print(LOG_APP, LOG_INFO, 0x0000, "penkit", "picked Green is:%{public}d ", pickedColorInfo.color.green);
OH_LOG_Print(LOG_APP, LOG_INFO, 0x0000, "penkit", "picked Blue is: %{public}d", pickedColorInfo.color.blue);
OH_LOG_Print(LOG_APP, LOG_INFO, 0x0000, "penkit", "picked Alpha is:%{public}d ", pickedColorInfo.color.alpha);
delete userData;
}
void startPick() {
int32_t posX = 200;
int32_t posY = 200;
void *userData = nullptr;
HMS_GCP_StartColorPicker(posX, posY, onSuccessCallback, userData);
}

通过调用HMS_GCP_StartColorPickerWithColorValue(),实现启动取色器。

该启动方法支持实时显示色值。

void onSuccessCallback(void *userData, HMS_GCP_PickedColorInfo pickedColorInfo, const int32_t code) {
OH_LOG_Print(LOG_APP, LOG_INFO, 0x0000, "penkit", "picked code is: %{public}d", code);
OH_LOG_Print(LOG_APP, LOG_INFO, 0x0000, "penkit", "picked Red is: %{public}d", pickedColorInfo.color.red);
OH_LOG_Print(LOG_APP, LOG_INFO, 0x0000, "penkit", "picked Green is:%{public}d ", pickedColorInfo.color.green);
OH_LOG_Print(LOG_APP, LOG_INFO, 0x0000, "penkit", "picked Blue is: %{public}d", pickedColorInfo.color.blue);
OH_LOG_Print(LOG_APP, LOG_INFO, 0x0000, "penkit", "picked Alpha is:%{public}d ", pickedColorInfo.color.alpha);
delete userData;
}
void startPickWithColorValue() {
int32_t posX = 200;
int32_t posY = 200;
void *userData = nullptr;
HMS_GCP_StartColorPickerWithColorValue(posX, posY, onSuccessCallback, userData);
}