鸿蒙提供了众多的AI,其中包括二维码生成,不过并没有提供二维码图片解码的功能,下面给大家讲解,基于SDK(API Version 5)进行开发
下:
核心代码
//定义ConnectionCallback回调,实现连接能力引擎成功与否后的操作。
ConnectionCallback connectionCallback =new ConnectionCallback() {
@Override
public void onServiceConnect() {
//连接成功
//实例化IBarcodeDetector接口,将此工程的context作为入参
IBarcodeDetector barcodeDetector = VisionManager.getBarcodeDetector(getAbility());
//定义码生成图像的尺寸,并根据图像大小分配字节流数组空间
final int SAMPLE_LENGTH =152;
byte[] byteArray =new byte[SAMPLE_LENGTH * SAMPLE_LENGTH *4];
//调用IBarcodeDetector的detect()方法,根据输入的字符串信息生成相应的二维码图片字节流
int result = barcodeDetector.detect("This is a TestCase of
IBarcodeDetector", byteArray, SAMPLE_LENGTH, SAMPLE_LENGTH);
//释放资源
barcodeDetector.release();
//断开与能力引擎的连接
VisionManager.destroy();
if (HwHiAIResultCode.AIRESULT_SUCCESS != result) {
//二维码转换失败处理
return;
}
//把流转换成图片
ImageSource.SourceOptions sourceOptions =new
ImageSource.SourceOptions();
sourceOptions.baseDensity =4;//像素密度
PixelMap pixelMap = ohos.media.image.ImageSource.create(byteArray,
sourceOptions).createPixelmap(new ImageSource.DecodingOptions());
PixelMapElement element =new PixelMapElement(pixelMap);
image.setBackground(element);
}
@Override
public void onServiceDisconnect() {
//断开连接,和华为开发人员确认过了,目前没有调用
}
});
}
};
//调用VisionManager.init()方法,将此工程的context和connectionCallback 作为入参,建立与能力
引擎的连接,context应为ohos.aafwk.ability.Ability或ohos.aafwk.ability.AbilitySlice的实例或
子类实例。
int result = VisionManager.init(getAbility(), connectionCallback);
//HwHiAIResultCode:定义调用华为AI引擎接口的结果码
if (HwHiAIResultCode.AIRESULT_SUCCESS != result) {
//判断是否初始化成功
}
网友评论