立即注册
查看: 377|回复: 0

[鸿蒙OS技术分享] HarmonyOS AI开发:码生成概述及开发指导

已绑定手机
发表于 2021-12-2 16:01:20 | 显示全部楼层 |阅读模式 来自 广东省深圳市
一、码生成概述
码生成能够根据开发者给定的字符串信息和二维码图片尺寸,返回相应的二维码图片字节流。调用方可以通过二维码字节流生成二维码图片。
约束与限制
●当前仅支持在中国区发售的华为终端设备。
●当前仅支持生成QR二维码(Quick Response Code)。由于QR二维码算法的限制,Java语言开发时字符串信息的长度不能超过2953个字符;JS语言开发时字符串信息的长度不能超过256个字符。
●Java语言开发时,生成的二维码图片的宽度不能超过1920像素,高度不能超过1680像素。由于QR二维码是通过正方形阵列承载信息的,建议二维码图片采用正方形,当二维码图片采用长方形时,会在QR二维码信息的周边区域留白。
●JS语言开发时,生成的二维码图片的宽高最小值为200px;当宽高不一致时,以二者最小值作为二维码的边长,且最终生成的二维码居中显示。支持矩形、圆形两种二维码类型(默认是矩形)。

二、码生成开发指导
1、场景介绍
码生成能够根据给定的字符串信息,生成相应的二维码图片。常见应用场景举例:
●社交或通讯类应用:根据输入的联系人信息,生成联系人二维码。
●购物或支付类应用:根据输入的支付链接,生成收款或付款二维码。

2、接口说明
码生成提供了的IBarcodeDetector()接口,常用方法的功能描述如下:
接口名方法功能描述
IBarcodeDetectorint detect(String barcodeInput, byte[] bitmapOutput, int width, int height);根据给定的信息和二维码图片尺寸,生成二维码图片字节流。
IBarcodeDetectorint release();停止QR码生成服务,释放资源。


3、开发步骤
1.在使用码生成SDK时,需要先将相关的类添加至工程。
import ohos.ai.cv.common.ConnectionCallback;
import ohos.ai.cv.common.VisionManager;
import ohos.ai.cv.qrcode.IBarcodeDetector;

2.定义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
    }
};

3.调用VisionManager.init()方法,将此工程的context和connectionCallback 作为入参,建立与能力引擎的连接,context应为ohos.aafwk.ability.Ability或ohos.aafwk.ability.AbilitySlice的实例或子类实例。
int result = VisionManager.init(context, connectionCallback);

4.在收到onServiceConnect回调连接服务成功后,实例化IBarcodeDetector接口,将此工程的context作为入参。
IBarcodeDetector barcodeDetector = VisionManager.getBarcodeDetector(context);

5.定义码生成图像的尺寸,并根据图像大小分配字节流数组空间。
final int SAMPLE_LENGTH = 152;
byte[] byteArray = new byte[SAMPLE_LENGTH * SAMPLE_LENGTH * 4];

6.调用IBarcodeDetector的detect()方法,根据输入的字符串信息生成相应的二维码图片字节流。
int result = barcodeDetector.detect("This is a TestCase of IBarcodeDetector", byteArray, SAMPLE_LENGTH, SAMPLE_LENGTH);
如果返回值为0,表明调用成功。后续可以利用API将解码流转换为图片源,简要示例如下:
InputStream inputStream = new ByteArrayInputStream(byteArray);
ImageSource imageSource = ImageSource.create(inputStream, null);

7.当码生成能力使用完毕后,调用IBarcodeDetector的release()方法,释放资源。
result = barcodeDetector.release();

8.调用VisionManager.destroy()方法,断开与能力引擎的连接。
VisionManager.destroy();
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
微信客服扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表