harmony-utils之ScanUtil,码工具类(扫码、码图生成、图片识码)

boyanx1周前技术教程3

harmony-utils 简介与说明


harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、屏幕、授权、通知、线程间通信、弹框、吐司、生物认证、用户首选项、拍照、相册、扫码、文件、日志,异常捕获、字符、字符串、数字、集合、日期、随机、base64、加密、解密、JSON等一系列的功能和操作,能够满足各种不同的开发需求。
picker_utils 是harmony-utils拆分出来的一个子库,包含PickerUtil、PhotoHelper、ScanUtil。

下载安装
ohpm i @pura/harmony-utils
ohpm i @pura/picker_utils

 //全局初始化方法,在UIAbility的onCreate方法中初始化 AppUtil.init()
 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
   AppUtil.init(this.context);
 }

API方法与使用


startScanForResult 调用默认界面扫码,使用Promise方式异步返回解码结果

ScanUtil.startScanForResult().then((scanResult) => {
  let scanStr1 = JSON.stringify(scanResult, null, 2);
});

generateBarcode 码图生成,使用Promise异步返回生成的码图

let txtStr = "harmony-utils 一款高效的OpenHarmony/HarmonyOS工具包,封装了常用工具类,提供一系列简单易用的方法";
let pixelMap = await ScanUtil.generateBarcode(txtStr);
ImageUtil.savePixelMap(pixelMap, FileUtil.getFilesDirPath(""), "qr_code.png");

decode 调用图片识码,使用Promise方式异步返回识码结果

let filePath = FileUtil.getFilesDirPath("","qr_code.png");
if (FileUtil.accessSync(this.filePath)) {
  ScanUtil.decode(this.filePath).then((scanResult) => {
    let scanStr3 = JSON.stringify(scanResult, null, 2);
  })
} else {
  ToastUtil.showToast("请先点击generateBarcode生成二维码图片");
}

decodeImage 调用图像数据识码能力,使用Promise异步回调返回识码结果

//优先获取图像的YuvByteBuffer, YuvHeight, YuvWidth数据,比如获取宽高是1920*1080时
let byteImg: detectBarcode.ByteImage = {
  byteBuffer: YuvByteBuffer,
  width: 1920,
  height: 1080,
  format: detectBarcode.ImageFormat.NV21
};
ScanUtil.decodeImage(byteImg).then((scanResult) => {
  let scanStr3 = JSON.stringify(scanResult, null, 2);
});

onPickerScanForResult 通过picker拉起图库并选择图片,并调用图片识码

ScanUtil.onPickerScanForResult().then((scanResult) => {
  let scanStr2 = JSON.stringify(scanResult, null, 2);
  Utils.showSheetText(scanStr2);
}).catch((err: BusinessError) => {
  ToastUtil.showToast("扫码异常!");
});

canIUseScan 判断

let canIUseScan = ScanUtil.canIUseScan();
ToastUtil.showToast(`当前设备是否支持码能力:${canIUseScan}`);

相关文章

Python 生成条形码、二维码 (Code 128、EAN-13、QR code等)

条形码和二维码是现代信息交换和数据存储的重要工具,它们将信息以图形的形式编码,便于机器识别和数据处理,被广泛应用于物流、零售、医疗、教育等各领域。本文将介绍如何使用Python快速生成各种常见的条形码...

技工外来人员入园登记二维码扫码如何操作?

长期以来,技工院校的外来人员登记依赖纸质表格填写。访客需手动填写姓名、身份证号、来访事由等信息,门卫逐一核对并记录,整个过程耗时5-10分钟。若遇多人同时到访,排队等待时间可能延长至半小时以上,不仅影...

药盒上这个码竟能查到这么多信息!你的药安全吗?赶快“扫一扫”

药品追溯码就是每盒药品的“电子身份证”,具有唯一性。一盒药品的追溯码,只应有一次被扫码销售的记录,若重复出现多次,就存在假药、回流药或药品被串换销售的可能。2024年4月以来,国家医保局全力开展医保药...

交管12123机动车二维码在哪里扫描

你是否遇到过在交管12123中找不到机动车二维码生成入口,或是扫描时提示信息不符的困扰?许多车主在处理违章、办理年检时,常因操作不熟或信息更新不及时,导致无法快速获取二维码。更有人担心二维码被篡改或泄...

抖音的扫一扫功能在哪里(2020抖音扫一扫功能在哪里)

作为抖音深度用户,我最近频繁使用"扫一扫"功能时遇到了不少困扰。这个看似简单的扫码入口,实际操作中却常出现识别速度慢、夜间模式光线适配差等问题。下面一起看下抖音的扫一扫功能设置的操作方...

微信,支付宝如何快速打开二维码,收款码,扫一扫?

我们去外面买东西,一般都是微信,支付宝付款,是不是先要打开软件,在打开二维码,感觉很麻烦。以往都是先打开微信再点击右上角加号,然后再点击收款码这样做实在太麻烦,教你一个更简单,快捷的方法。1.长按支付...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。