文档管理中心
我的

您当前正在浏览HarmonyOS最新文档,覆盖已发布的所有API版本,可在API参考中筛选您使用的API版本。详细的版本配套关系请参考版本说明。

指南与API参考API参考媒体Scan Kit(统一扫码服务)ArkTS APIscanBarcode (默认界面扫码)

scanBarcode (默认界面扫码)

Phone5.0.0(12)+Tablet5.0.0(12)+Wearable6.1.0(23)+

模块概述

scanBarcode模块提供系统级体验一致的扫码界面,包含相机预览流,相册扫码入口,暗光环境闪光灯开启提示。Scan Kit默认界面扫码对系统相机权限进行了预授权且调用期间处于安全访问状态,无需开发者再次申请相机权限。

为便于开发者快速上手,建议参考官方提供的示例工程。

起始版本: 4.0.0(10)

导入模块

收起
自动换行
深色代码主题
复制
  1. import { scanBarcode } from '@kit.ScanKit';

ScanResult

Phone5.0.0(12)+Tablet5.0.0(12)+Wearable6.1.0(23)+

扫码结果。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.Multimedia.Scan.ScanBarcode

起始版本: 4.0.0(10)

展开
名称 类型 只读 可选 说明
scanType scanCore.ScanType 否 否

码类型。

元服务API: 从API版本4.1.0(11)开始,该接口支持在元服务中使用。

originalValue string 否 否

码识别内容结果。

元服务API: 从API版本4.1.0(11)开始,该接口支持在元服务中使用。

scanCodeRect ScanCodeRect 否 是

码识别位置信息。

元服务API: 从API版本26.0.0开始,该接口支持在元服务中使用。

起始版本: 4.1.0(11)

cornerPoints Array<Point> 否 是

码识别角点位置信息,返回QR Code四个角点。此参数仅图像识码接口decodeImage返回。

元服务API: 从API版本26.0.0开始,该接口支持在元服务中使用。

起始版本: 5.0.0(12)

isGS1 boolean 否 是

码图是否携带GS1(Global Standards 1)数据。

true表示码图携带GS1数据;false表示码图不携带GS1数据。默认值是false。

元服务API: 从API版本6.0.2(22)开始,该接口支持在元服务中使用。

起始版本: 6.0.2(22)

source scanCore.ScanSource 否 是

扫码结果来源。此参数仅默认界面扫码接口返回。用于区分扫码结果来源于相机预览流还是相册图片,以便进行不同的业务处理。

元服务API: 从API版本6.0.2(22)开始,该接口支持在元服务中使用。

起始版本: 6.0.2(22)

ScanCodeRect

Phone5.0.0(12)+Tablet5.0.0(12)+Wearable6.1.0(23)+

码的位置信息。使用默认界面扫码(startScan和startScanForResult)不返回码位置。

模型约束: 此接口仅可在Stage模型下使用。

元服务API: 从API版本26.0.0开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Multimedia.Scan.ScanBarcode

起始版本: 4.1.0(11)

展开
名称 类型 只读 可选 说明
left number 否 否 码外接矩形左上角的x坐标。单位:px。
top number 否 否 码外接矩形左上角的y坐标。单位:px。
right number 否 否 码外接矩形右下角的x坐标。单位:px。
bottom number 否 否 码外接矩形右下角的y坐标。单位:px。
说明

自定义界面扫码返回的坐标单位与传入参数ViewControl中width、height单位一致。

Point

Phone5.0.0(12)+Tablet5.0.0(12)+Wearable6.1.0(23)+

点坐标,该坐标系左上角为{0,0},此坐标系是以设备充电口在右侧时的横向设备方向为基准的。

模型约束: 此接口仅可在Stage模型下使用。

元服务API: 从API版本26.0.0开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Multimedia.Scan.ScanBarcode

起始版本: 5.0.0(12)

展开
名称 类型 只读 可选 说明
x number 否 否 X轴坐标,单位:px。
y number 否 否 Y轴坐标,单位:px。

ScanOptions

Phone5.0.0(12)+Tablet5.0.0(12)+Wearable6.1.0(23)+

扫码配置参数。

模型约束: 此接口仅可在Stage模型下使用。

元服务API: 从API版本4.1.0(11)开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Multimedia.Scan.ScanBarcode

起始版本: 4.0.0(10)

展开
名称 类型 只读 可选 说明
scanTypes Array<scanCore.ScanType> 否 是

设置扫码类型。

默认值: ALL(全部码类型)。

从API版本6.1.0(23)开始,默认界面扫码的标题支持根据此参数进行动态显示。

在API版本6.1.0(23)之前,标题统一显示为“扫描二维码/条形码”。

在API版本6.1.0(23)及之后:

- scanTypes为ALL、FORMAT_UNKNOWN,或同时包含条形码和二维码类型,标题显示为“扫描二维码/条形码”。

- scanTypes未设置,标题显示为“扫描二维码/条形码”。

- scanTypes仅包含条形码类型,标题显示为“扫描条形码”。

- scanTypes仅包含二维码类型,标题显示为“扫描二维码”。

enableMultiMode boolean 否 是

是否开启多码识别。

默认值: false。

- true:多码识别。

- false:单码识别。

enableAlbum boolean 否 是

是否开启相册。

默认值: true。

- true:开启相册扫码。

- false:关闭相册扫码。

此参数只控制默认界面扫码能力中的相册识码且相册识码只支持单码识别。

示例:

收起
自动换行
深色代码主题
复制
  1. import { scanBarcode, scanCore } from '@kit.ScanKit';
  2. import { hilog } from '@kit.PerformanceAnalysisKit';
  3. import { BusinessError } from '@kit.BasicServicesKit';
  4. // 定义扫码参数options
  5. let options: scanBarcode.ScanOptions = { scanTypes: [scanCore.ScanType.ALL], enableMultiMode: true, enableAlbum: true };
  6. function loadPage(uiContext: UIContext) {
  7. try {
  8. scanBarcode.startScanForResult(uiContext.getHostContext(), options).then((data: scanBarcode.ScanResult) => {
  9. hilog.info(0x0001, '[Scan Sample]',
  10. `Succeeded in getting ScanResult by promise with options, scanType: ${data.scanType}`);
  11. }).catch((err: BusinessError) => {
  12. hilog.error(0x0001, '[Scan Sample]',
  13. `Failed to get ScanResult by promise with options. Code: ${err.code}, message: ${err.message}`);
  14. });
  15. } catch (err) {
  16. hilog.error(0x0001, '[Scan Sample]',
  17. `Failed to startScanForResult. Code: ${err.code}, message: ${err.message}`);
  18. }
  19. }

startScanForResult

Phone5.0.0(12)+Tablet5.0.0(12)+Wearable6.1.0(23)+

startScanForResult(context: common.Context, options?: ScanOptions): Promise<ScanResult>

通过配置参数调用默认界面扫码,返回扫码结果。需要在页面和组件的生命周期内调用。使用Promise异步回调。

模型约束: 此接口仅可在Stage模型下使用。

元服务API: 从API版本4.1.0(11)开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Multimedia.Scan.ScanBarcode

设备行为差异: 在API版本6.0.2(22)及之前,该接口在Phone、Tablet中可正常调用。在API版本6.1.0(23)及之后,该接口在Phone、Tablet、带后置相机的Wearable中可正常调用,在不带后置相机的Wearable中无响应。可以通过getSupportedCameras接口查询是否带后置相机。

起始版本: 4.1.0(11)

参数:

展开
参数名 类型 必填 说明
context common.Context 是 应用上下文。
options ScanOptions 否

扫码配置参数。

默认值: 参考ScanOptions的默认值。

返回值:

展开
类型 说明
Promise<ScanResult> Promise对象,返回扫码结果对象。

错误码:

以下错误码的详细介绍请参见通用错误码和ArkTS API错误码。

展开
错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
1000500001 Internal error.
1000500002

The user canceled the barcode scanning.

适用版本:5.0.0(12)+

示例:

收起
自动换行
深色代码主题
复制
  1. import { scanBarcode, scanCore } from '@kit.ScanKit';
  2. import { hilog } from '@kit.PerformanceAnalysisKit';
  3. import { BusinessError } from '@kit.BasicServicesKit';
  4. // 定义扫码参数options
  5. let options: scanBarcode.ScanOptions = { scanTypes: [scanCore.ScanType.ALL], enableMultiMode: true, enableAlbum: true };
  6. function loadPage(uiContext: UIContext) {
  7. try {
  8. scanBarcode.startScanForResult(uiContext.getHostContext(), options).then((data: scanBarcode.ScanResult) => {
  9. hilog.info(0x0001, '[Scan Sample]',
  10. `Succeeded in getting ScanResult by promise with options, scanType: ${data.scanType}`);
  11. }).catch((err: BusinessError) => {
  12. hilog.error(0x0001, '[Scan Sample]',
  13. `Failed to get ScanResult by promise with options. Code: ${err.code}, message: ${err.message}`);
  14. });
  15. } catch (err) {
  16. hilog.error(0x0001, '[Scan Sample]',
  17. `Failed to startScanForResult. Code: ${err.code}, message: ${err.message}`);
  18. }
  19. }

startScanForResult

Phone5.0.0(12)+Tablet5.0.0(12)+Wearable6.1.0(23)+

startScanForResult(context: common.Context, callback: AsyncCallback<ScanResult>): void

启动默认界面扫码,返回扫码结果。需要在页面和组件的生命周期内调用。使用callback异步回调。

模型约束: 此接口仅可在Stage模型下使用。

元服务API: 从API版本4.1.0(11)开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Multimedia.Scan.ScanBarcode

设备行为差异: 在API版本6.0.2(22)及之前,该接口在Phone、Tablet中可正常调用。在API版本6.1.0(23)及之后,该接口在Phone、Tablet、带后置相机的Wearable中可正常调用,在不带后置相机的Wearable中无响应。可以通过getSupportedCameras接口查询是否带后置相机。

起始版本: 4.1.0(11)

参数:

展开
参数名 类型 必填 说明
context common.Context 是 应用上下文。
callback AsyncCallback<ScanResult> 是 回调函数。当扫码返回成功,err为undefined,data为获取到的扫码结果对象ScanResult;否则为错误对象。

错误码:

以下错误码的详细介绍请参见通用错误码和ArkTS API错误码。

展开
错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
1000500001 Internal error.
1000500002

The user canceled the barcode scanning.

适用版本:5.0.0(12)+

示例:

收起
自动换行
深色代码主题
复制
  1. import { scanBarcode } from '@kit.ScanKit';
  2. import { hilog } from '@kit.PerformanceAnalysisKit';
  3. import { BusinessError } from '@kit.BasicServicesKit';
  4. // 启动扫码,拉起扫码界面
  5. function loadPage(uiContext: UIContext) {
  6. try {
  7. scanBarcode.startScanForResult(uiContext.getHostContext(),
  8. (err: BusinessError, data: scanBarcode.ScanResult) => {
  9. if (err) {
  10. hilog.error(0x0001, '[Scan Sample]',
  11. `Failed to get ScanResult by callback. Code: ${err.code}, message: ${err.message}`);
  12. return;
  13. }
  14. hilog.info(0x0001, '[Scan Sample]',
  15. `Succeeded in getting ScanResult by callback, scanType: ${data.scanType}`);
  16. });
  17. } catch (err) {
  18. hilog.error(0x0001, '[Scan Sample]',
  19. `Failed to startScanForResult. Code: ${err.code}, message: ${err.message}`);
  20. }
  21. }

startScanForResult

Phone5.0.0(12)+Tablet5.0.0(12)+Wearable6.1.0(23)+

startScanForResult(context: common.Context, options: ScanOptions, callback: AsyncCallback<ScanResult>): void

通过配置参数调用默认界面扫码,返回扫码结果。需要在页面和组件的生命周期内调用。使用callback异步回调。

模型约束: 此接口仅可在Stage模型下使用。

元服务API: 从API版本4.1.0(11)开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Multimedia.Scan.ScanBarcode

设备行为差异: 在API版本6.0.2(22)及之前,该接口在Phone、Tablet中可正常调用。在API版本6.1.0(23)及之后,该接口在Phone、Tablet、带后置相机的Wearable中可正常调用,在不带后置相机的Wearable中无响应。可以通过getSupportedCameras接口查询是否带后置相机。

起始版本: 4.1.0(11)

参数:

展开
参数名 类型 必填 说明
context common.Context 是 应用上下文。
options ScanOptions 是 扫码配置参数。
callback AsyncCallback<ScanResult> 是 回调函数。当扫码返回成功,err为undefined,data为获取到的扫码结果对象ScanResult;否则为错误对象。

错误码

以下错误码的详细介绍请参见通用错误码和ArkTS API错误码。

展开
错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
1000500001 Internal error.
1000500002

The user canceled the barcode scanning.

适用版本:5.0.0(12)+

示例:

收起
自动换行
深色代码主题
复制
  1. import { scanCore, scanBarcode } from '@kit.ScanKit';
  2. import { hilog } from '@kit.PerformanceAnalysisKit';
  3. import { BusinessError } from '@kit.BasicServicesKit';
  4. // 定义扫码参数options
  5. let options: scanBarcode.ScanOptions = { scanTypes: [scanCore.ScanType.ALL], enableMultiMode: true, enableAlbum: true };
  6. // 启动扫码,拉起扫码界面
  7. function loadPage(uiContext: UIContext) {
  8. try {
  9. scanBarcode.startScanForResult(uiContext.getHostContext(), options,
  10. (err: BusinessError, data: scanBarcode.ScanResult) => {
  11. if (err) {
  12. hilog.error(0x0001, '[Scan Sample]',
  13. `Failed to get ScanResult by callback with options. Code: ${err.code}, message: ${err.message}`);
  14. return;
  15. }
  16. hilog.info(0x0001, '[Scan Sample]',
  17. `Succeeded in getting ScanResult by callback with options, scanType: ${data.scanType}`);
  18. });
  19. } catch (err) {
  20. hilog.error(0x0001, '[Scan Sample]',
  21. `Failed to startScanForResult. Code: ${err.code}, message: ${err.message}`);
  22. }
  23. }

startScan(deprecated)

Phone5.0.0(12)+Tablet5.0.0(12)+Wearable6.1.0(23)+

startScan(options?: ScanOptions): Promise<ScanResult>

通过配置参数调用默认界面扫码,返回扫码结果。使用Promise异步回调。

废弃说明: 从API版本4.1.0(11)开始废弃,建议使用startScanForResult替代。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.Multimedia.Scan.ScanBarcode

设备行为差异: 在API版本6.0.2(22)及之前,该接口在Phone、Tablet中可正常调用。在API版本6.1.0(23)及之后,该接口在Phone、Tablet、带后置相机的Wearable中可正常调用,在不带后置相机的Wearable中无响应。可以通过getSupportedCameras接口查询是否带后置相机。

起始版本: 4.0.0(10)

参数:

展开
参数名 类型 必填 说明
options ScanOptions 否

启动扫码配置参数。

默认值: 参考ScanOptions的默认值。

返回值:

展开
类型 说明
Promise<ScanResult> Promise对象,返回扫码结果对象。

错误码:

以下错误码的详细介绍请参见通用错误码。

展开
错误码ID 错误信息
401 Parameter error. Possible causes: 1. Incorrect parameter types; 2. Parameter verification failed.

示例:

收起
自动换行
深色代码主题
复制
  1. import { scanCore, scanBarcode } from '@kit.ScanKit';
  2. import { hilog } from '@kit.PerformanceAnalysisKit';
  3. import { BusinessError } from '@kit.BasicServicesKit';
  4. // 构造启动扫码的入参options
  5. let options: scanBarcode.ScanOptions = { scanTypes: [scanCore.ScanType.ALL], enableMultiMode: true, enableAlbum: true };
  6. try {
  7. scanBarcode.startScan(options).then((data: scanBarcode.ScanResult) => {
  8. hilog.info(0x0001, '[Scan Sample]',
  9. `Succeeded in getting ScanResult by promise with options, scanType: ${data.scanType}`);
  10. }).catch((err: BusinessError) => {
  11. // 当扫码过程中出现错误,打印并返回报错
  12. hilog.error(0x0001, '[Scan Sample]',
  13. `Failed to get ScanResult by promise with options. Code: ${err.code}, message: ${err.message}`);
  14. });
  15. } catch (err) {
  16. hilog.error(0x0001, '[Scan Sample]', `Failed to startScan. Code: ${err.code}, message: ${err.message}`);
  17. }

startScan(deprecated)

Phone5.0.0(12)+Tablet5.0.0(12)+Wearable6.1.0(23)+

startScan(callback: AsyncCallback<ScanResult>): void

启动默认界面扫码,返回扫码结果。使用callback异步回调。

废弃说明: 从API版本4.1.0(11)开始废弃,建议使用startScanForResult替代。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.Multimedia.Scan.ScanBarcode

设备行为差异: 在API版本6.0.2(22)及之前,该接口在Phone、Tablet中可正常调用。在API版本6.1.0(23)及之后,该接口在Phone、Tablet、带后置相机的Wearable中可正常调用,在不带后置相机的Wearable中无响应。可以通过getSupportedCameras接口查询是否带后置相机。

起始版本: 4.0.0(10)

参数:

展开
参数名 类型 必填 说明
callback AsyncCallback<ScanResult> 是 回调函数。当扫码返回成功,err为undefined,data为获取到的扫码结果对象ScanResult;否则为错误对象。

错误码:

以下错误码的详细介绍请参见通用错误码。

展开
错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

示例:

收起
自动换行
深色代码主题
复制
  1. import { scanBarcode } from '@kit.ScanKit';
  2. import { hilog } from '@kit.PerformanceAnalysisKit';
  3. import { BusinessError } from '@kit.BasicServicesKit';
  4. try {
  5. scanBarcode.startScan((err: BusinessError, data: scanBarcode.ScanResult) => {
  6. // error回调监听,当扫码过程中出现错误,打印并返回报错
  7. if (err) {
  8. hilog.error(0x0001, '[Scan Sample]',
  9. `Failed to get ScanResult by callback. Code: ${err.code}, message: ${err.message}`);
  10. return;
  11. }
  12. hilog.info(0x0001, '[Scan Sample]',
  13. `Succeeded in getting ScanResult by callback, scanType: ${data.scanType}`);
  14. });
  15. } catch (err) {
  16. hilog.error(0x0001, '[Scan Sample]', `Failed to startScan. Code: ${err.code}, message: ${err.message}`);
  17. }

startScan(deprecated)

Phone5.0.0(12)+Tablet5.0.0(12)+Wearable6.1.0(23)+

startScan(options: ScanOptions, callback: AsyncCallback<ScanResult>): void

通过配置参数调用默认界面扫码,返回扫码结果。使用callback异步回调。

废弃说明: 从API版本4.1.0(11)开始废弃,建议使用startScanForResult替代。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.Multimedia.Scan.ScanBarcode

设备行为差异: 在API版本6.0.2(22)及之前,该接口在Phone、Tablet中可正常调用。在API版本6.1.0(23)及之后,该接口在Phone、Tablet、带后置相机的Wearable中可正常调用,在不带后置相机的Wearable中无响应。可以通过getSupportedCameras接口查询是否带后置相机。

起始版本: 4.0.0(10)

参数:

展开
参数名 类型 必填 说明
options ScanOptions 是 扫码配置参数。
callback AsyncCallback<ScanResult> 是 回调函数,当扫码返回成功,err为undefined,data为获取到的扫码结果对象ScanResult;否则为错误对象。

错误码:

以下错误码的详细介绍请参见通用错误码。

展开
错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

示例:

收起
自动换行
深色代码主题
复制
  1. import { scanCore, scanBarcode } from '@kit.ScanKit';
  2. import { hilog } from '@kit.PerformanceAnalysisKit';
  3. import { BusinessError } from '@kit.BasicServicesKit';
  4. // 构造启动扫码的入参options
  5. let options: scanBarcode.ScanOptions = { scanTypes: [scanCore.ScanType.ALL], enableMultiMode: true, enableAlbum: true };
  6. try {
  7. scanBarcode.startScan(options, (err: BusinessError, data: scanBarcode.ScanResult) => {
  8. // error回调监听,当扫码过程中出现错误,打印并返回报错
  9. if (err) {
  10. hilog.error(0x0001, '[Scan Sample]',
  11. `Failed to get ScanResult by callback with options. Code: ${err.code}, message: ${err.message}`);
  12. return;
  13. }
  14. hilog.info(0x0001, '[Scan Sample]',
  15. `Succeeded in getting ScanResult by callback with options, scanType: ${data.scanType}`);
  16. });
  17. } catch (err) {
  18. hilog.error(0x0001, '[Scan Sample]', `Failed to startScan. Code: ${err.code}, message: ${err.message}`);
  19. }