HarmonyOS之AI能力·二维码的生成和使用
【摘要】
一、码生成
码生成能够根据开发者给定的字符串信息和二维码图片尺寸,返回相应的二维码图片字节流。调用方可以通过二维码字节流生成二维码图片。
二、约束与限制
当前仅支持生成 QR 二维码(Quick R...
一、码生成
- 码生成能够根据开发者给定的字符串信息和二维码图片尺寸,返回相应的二维码图片字节流。
- 调用方可以通过二维码字节流生成二维码图片。
二、约束与限制
- 当前仅支持生成 QR 二维码(Quick Response Code)。
- 由于 QR 二维码算法的限制,字符串信息的长度不能超过2953个字符。生成的二维码图片的宽度不能超过 1920 像素,高度不能超过 1680 像素。
- 由于 QR 二维码是通过正方形阵列承载信息的,建议二维码图片采用正方形,当二维码图片采用长方形时,会在 QR 二维码信息的周边区域留白。
三、应用场景
- 码生成能够根据给定的字符串信息,生成相应的二维码图片。常见应用场景举例:
-
- 社交或通讯类应用:根据输入的联系人信息,生成联系人二维码。
-
- 购物或支付类应用:根据输入的支付链接,生成收款或付款二维码。
四、接口说明
- 码生成提供了的 IBarcodeDetector() 接口,常用方法的功能描述如下:
接口名 | 方法 | 功能描述 |
---|---|---|
IBarcodeDetector | int detect(String barcodeInput, byte[] bitmapOutput, int width, int height); | 根据给定的信息和二维码图片尺寸,生成二维码图片字节流 |
IBarcodeDetector | int release(); | 停止QR码生成服务,释放资源 |
五、开发步骤
- 在使用码生成 SDK 时,需要先将相关的类添加至工程:
import ohos.ai.cv.common.ConnectionCallback;
import ohos.ai.cv.common.VisionManager;
import ohos.ai.cv.qrcode.IBarcodeDetector;
- 1
- 2
- 3
- 定义 ConnectionCallback 回调,实现连接能力引擎成功与否后的操作:
ConnectionCallback connectionCallback = new ConnectionCallback() {
@Override
public void onServiceConnect() {
// Do something when service connects successfully
}
@Override
public void onServiceDisconnect() {
// Do something when service connects unsuccessfully
}
};
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 调用 VisionManager.init() 方法,将此工程的 context 和 connectionCallback 作为入参,建立与能力引擎的连接,context 应为 ohos.aafwk.ability.Ability 或 ohos.aafwk.ability.AbilitySlice 的实例或子类实例:
int result = VisionManager.init(context, connectionCallback);
- 1
- 实例化 IBarcodeDetector 接口,将此工程的 context 作为入参:
IBarcodeDetector barcodeDetector = VisionManager.getBarcodeDetector(context);
- 1
- 定义码生成图像的尺寸,并根据图像大小分配字节流数组空间:
final int SAMPLE_LENGTH = 152;
byte[] byteArray = new byte[SAMPLE_LENGTH * SAMPLE_LENGTH * 4];
- 1
- 2
- 调用 IBarcodeDetector的detect() 方法,根据输入的字符串信息生成相应的二维码图片字节流,如果返回值为0,表明调用成功:
int result = barcodeDetector.detect("This is a TestCase of IBarcodeDetector", byteArray, SAMPLE_LENGTH, SAMPLE_LENGTH);
- 1
- 当码生成能力使用完毕后,调用 IBarcodeDetector 的 release() 方法,释放资源:
result = barcodeDetector.release();
- 1
- 调用 VisionManager.destroy() 方法,断开与能力引擎的连接:
VisionManager.destroy();
- 1
文章来源: blog.csdn.net,作者:Serendipity·y,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/Forever_wj/article/details/118310715
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)