HarmonyOS 5鸿蒙场景技术共建能力: Scan Kit统一扫码服务
一、前言:
大家好,我是完美句号!欢迎来到 HarmonyOS 5 开发实战系列。本系列致力于为开发者提供实用的技术方案和即拿即用的代码示例,帮助大家快速掌握 HarmonyOS Next 应用开发中的核心功能。在HarmonyOS 5鸿蒙系统中,基于HarmonyOS 5版本,开发者可以使用Scan Kit(统一扫码服务)来快速构建面向各种场景的码图识别和生成能力,以及扫码直达能力。
Scan Kit应用了多项计算机视觉技术和AI算法技术,不仅实现了远距离自动扫码,同时还针对多种复杂扫码场景(如暗光、污损、模糊、小角度、曲面码等)做了识别优化,提升扫码成功率与用户体验。
二、Scan Kit扫码服务介绍:
Scan Kit(统一扫码服务)是华为软硬协同的系统级扫码服务,帮助开发者的应用快速构建面向各种场景的码图识别和生成能力,以及扫码直达能力。Scan Kit应用了多项计算机视觉技术和AI算法技术,不仅实现了远距离自动扫码,同时还针对多种复杂扫码场景(如暗光、污损、模糊、小角度、曲面码等)做了识别优化,提升扫码成功率与用户体验。

2.1 Scan Kit常用功能:
- 1.支持13种码格式:QR Code、Data Matrix、PDF417、Aztec、EAN-8、EAN-13、UPC-A、UPC-E、Codabar、Code 39、Code 93、Code 128、ITF-14
- 2.通用扫码界面:提供默认界面扫码能力和自定义界面扫码能力,满足开发者个性化定制需求。
- 3.生成码图:基于开发者提供的字符串生成条形码或二维码。
- 4.图片识别:支持识别本地图片中的条形码和二维码。
- 5.复杂场景识别增强:通过智能扫码模式和计算机视觉(CV)技术,有效提升暗光、污损、模糊、小角度、曲面码等复杂场景的码图识别成功率。
- 6.扫码直达:用于可通过系统各扫码入口扫描开发者的二维码,一步直达开发者指定的应用服务业。
2.2 Scan Kit优势:
- 1.一行代码,接入简单;系统级接口,包体0增加。
- 2.系统相机权限预授权,保护用户信息安全。
- 3.应用多项CV技术,提升扫码成功率和速度。
- 4.应用端侧AI算法技术,实现远距离识码。
2.3 Scan Kit使用场景:
- 1.支付转账:应用于银行、购物类App中,生成付款码、收款码,扫码付款、转账、支付账单。
- 2.自助服务:应用于点餐、骑车、充电等O2O商业模式中,扫码享受指定服务,打通线上、线下结合的运营模式。
- 3.用户拉新:应用于社交场景中,生成名片、课程、商品等含二维码的邀请卡,好友可扫码添加好友、查看信息。
- 4.验证登录:应用于电脑、手表、显示器等不同设备的扫码登录,提升账号登录便捷性及安全性。
- 5.设备绑定:应用于扫码绑定摄像头、投影仪、车机等智能设备,实现远程操控。
- 6.扫码查物:应用于电商、信息查询类App中,扫描商品条形码、二维码,查询商品信息。
三、默认界面扫码介绍:
默认界面扫码能力提供系统级体验一致的扫码界面,包含相机预览流,相册扫码入口,暗光环境闪光灯开启提示,且Scan Kit对系统相机权限进行预授权,调用接口时,无需开发者再次申请相机权限。集成简单,适用于不同扫码场景的应用开发。

3.1 场景介绍:
默认界面扫码能力提供了系统级体验一致的扫码界面以及相册扫码入口,支持单码和多码识别,支持多种识码类型,诸如常见的二维码、条形码等。无需使用三方库就可帮助开发者的应用快速处理各种扫码场景。
3.2 约束与限制:
默认界面扫码能力暂不支持悬浮屏、分屏场景。相册扫码只支持单码识别。
3.3 默认界面扫码业务流程:
- 步骤一:用户向开发者的应用发起扫码请求。
- 步骤二:开发者的应用通过调用Scan Kit的startScanForResult接口启动扫码界面。
- 步骤三:首次使用应用的默认界面扫码功能时,会向用户弹出隐私提醒。
- 步骤四:用户需点击确认已了解隐私提醒,才能进行下一步操作。若用户不同意隐私内容,可左滑关闭应用。
- 步骤五:Scan Kit通过Callback回调函数或Promise方式返回扫码结果。
- 步骤六:用户进行多码扫描时,需点击选择其中一个码图获取扫码结果返回。单码扫码则可直接返回扫码结果。
- 步骤七:应用向用户返回扫码结果。
默认界面扫码接口说明,接口返回值有两种返回形式:Callback和Promise回调。下表中为默认界面扫码Callback和Promise形式接口,Callback和Promise只是返回值方式不一样,功能相同。startScanForResult接口打开的是应用内呈现的扫码界面样式。
startScanForResult(context: common.Context, options?: ScanOptions): Promise<ScanResult> 启动默认界面扫码,通过ScanOptions进行扫码参数设置,使用Promise异步回调返回扫码结果。
startScanForResult(context: common.Context, options: ScanOptions, callback: AsyncCallback<ScanResult>): void 启动默认界面扫码,通过ScanOptions进行扫码参数设置,使用Callback异步回调返回扫码结果。
startScanForResult(context: common.Context, callback: AsyncCallback<ScanResult>): void 启动默认界面扫码,使用Callback回调返回扫码结果。
3.4 默认界面扫码开发步骤:
Scan Kit提供了默认界面扫码的能力,由扫码接口直接控制相机实现最优的相机放大控制、自适应的曝光调节、自适应对焦调节等操作,保障流畅的扫码体验,减少开发者的工作量。
步骤一:导入默认界面扫码模块和相关模块,scanCore提供扫码类型定义,scanBarcode提供拉起默认界面扫码的方法和参数。
import { scanCore, scanBarcode } from '@kit.ScanKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { JSON } from '@kit.ArkTS';
步骤二:调用startScanForResult方法拉起默认扫码界面,并通过Promise方法得到扫码结果。
Button('默认界面扫码')
.type(ButtonType.Normal)
.borderRadius(8)
.onClick(async () => {
console.info("[ScanKitDemo] 默认界面扫码开始。");
// 定义扫码参数options
const options: scanBarcode.ScanOptions = {
scanTypes: [scanCore.ScanType.ALL],
enableMultiMode: true,
enableAlbum: true
};
try {
const result: scanBarcode.ScanResult = await scanBarcode.startScanForResult(getContext(this), options);
console.info("[ScanKitDemo] Succeed. Data: " + JSON.stringify(result));
promptAction.showToast({
message: JSON.stringify(result),
duration: 5000
})
} catch (error) {
const e: BusinessError = error as BusinessError;
console.error("[ScanKitDemo] Failed. Cause: " + JSON.stringify(e));
}
})
步骤三:点击“默认界面扫码”按钮,弹出“扫描二维码/条形码”窗口,对准二维码/条形码进行扫描,用toast显示扫码信息。

更多推荐



所有评论(0)