hwScanner

插件概述

简介

华为统一扫码服务(HUAWEI Scan Kit)提供便捷的条形码和二维码扫描、解析、生成能力,帮助您快速构建应用内的扫码功能。 得益于华为在计算机视觉领域能力的积累,Scan Kit可以实现远距离码或小型码的检测和自动放大,同时针对常见复杂扫码场景(如反光、暗光、污损、模糊、柱面)做了针对性识别优化,提升扫码成功率与用户体验。Scan Kit支持Android和iOS系统集成。其中,Android系统的支持横屏扫码能力。

Scan Kit支持扫描13种全球主流的码制式。如果您的应用只处理部分特定的码制式,您也可以在接口中指定制式以便加快扫码速度。已支持的码制式: 一维码:EAN-8、EAN-13、UPC-A、UPC-E、Codabar、Code 39、Code 93、Code 128、ITF 二维码:QR Code、Data Matrix、PDF417、Aztec

Scan Kit支持将字符串转换为一维码或二维码,目前已支持的码制式为EAN-8、EAN-13、UPC-A、UPC-E、Codabar、Code 39、Code 93、Code 128、ITF、QR Code、Data Matrix、PDF417、Aztec。开发者只需要提供字符串、码制式和尺寸要求即可获得相应的码图。

隐私声明,参考华为官网文档------隐私声明

插件简述

hwScanner 插件封装了华为的统一扫码服务(HUAWEI Scan Kit)。

注意:使用本插件前,需在云编译页面勾选添加访问摄像头权限,若要访问相册也需沟通申请访问相册权限

本插件封装了两套扫码方案:

方案一

开发者通过调用 defaultScanner 接口直接打开自带默认 UI 效果的二维码/条形码扫描页面,本界面相当于打开一个 window 窗口,其界面内容不支持自定义。用户可在此界面实现功能如下:

  1. 从系统相册选取二维码/条码图片进行解密操作

  2. 打开摄像头,自动对焦扫码想要解析的二维码/条码

方案二

通过 customizedScanner 接口打开一个自定义大小的扫描区域(本区域相当于打开一个 frame)进行扫描。开发者可自行 open 一个 frame 贴在插件上,从而实现自定义扫描界面的功能。然后配合使用showCustomizedScanner、switchLight 等接口实现开关闪光灯、重设扫描界面位置大小、图片解码、字符串编码等相关功能。详情请参考插件接口参数。

注意:

iOS端最低适配版本为iOS11.0

插件接口

defaultScanner

打开自带默认 UI 效果的二维码/条形码扫描页面,本界面相当于打开一个 window 窗口,其界面内容不支持自定义

defaultScanner({params}, callback(ret))

params

sound:

  • 类型:字符串
  • 描述:(可选项)扫描结束后的提示音文件路径,要求本地路径(fs://、widget://),为保证兼容性,推荐使用 wav 格式的短音频文件 (仅iOS支持)

formatType:

  • 类型:字符串
  • 描述:(可选项) 二维码与一维码的类型
  • 默认值:ALL
  • 取值范围:
    • ALL:扫描所有条码类型。
    • UPC_E:UPC-E条码类型。
    • UPC_A:UPC-A条码类型。
    • QR_CODE:QR code二维码类型。
    • QR_CODEQR_CODE:PDF417二维码类型。
    • ITF:ITF-14条码类型。
    • EAN_13:EAN-13条码类型。
    • EAN_8:EAN-8条码类型。
    • DATA_MATRIX:Data Matrix二维码类型。
    • CODE_128:Code 128条码类型。
    • CODE_93:Code 93条码类型。
    • CODE_39:Code 39条码类型。
    • CODABAR:Code Bar条码类型。
    • AZTEC:AZTEC二维码类型。

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
   status: true,       //布尔类型;扫码事件类型  
   result: '',         //字符串类型;扫码结果
   eventType:''        //字符串类型;交互事件类型,仅支持iOS 端;取值范围:
                       //normal:包括扫码成功、失败,识别系统相册里的图片成功、失败
                       //noPhotoPermission:用户点击右上角系统相册图标时,无系统相册访问权限时返回此值
                       //photoDisable:用户点击右上角系统相册图标时发生未知错误
}

示例代码

var hwScanner = api.require('hwScanner');
hwScanner.defaultScanner({
    formatType: 'ALL'
}, function(ret) {
    if (ret) {
        api.alert({msg:JSON.stringify(ret)});
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

scanPictureDirect

直接识别图片

scanPictureDirect({params}, callback(ret))

params

imagePath:

  • 类型:字符串
  • 描述:要识别的图片路径,要求本地路径(fs://)

formatType:

  • 类型:字符串
  • 描述:(可选项) 二维码与一维码的类型
  • 默认值:ALL
  • 取值范围:
    • ALL:扫描所有条码类型。
    • UPC_E:UPC-E条码类型。
    • UPC_A:UPC-A条码类型。
    • QR_CODE:QR code二维码类型。
    • PDF_417:PDF417二维码类型。
    • ITF:ITF-14条码类型。
    • EAN_13:EAN-13条码类型。
    • EAN_8:EAN-8条码类型。
    • DATA_MATRIX:Data Matrix二维码类型。
    • CODE_128:Code 128条码类型。
    • CODE_93:Code 93条码类型。
    • CODE_39:Code 39条码类型。
    • CODABAR:Code Bar条码类型。
    • AZTEC:AZTEC二维码类型。

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
   status: true,       //布尔类型;扫码事件类型  
   result: ''          //字符串类型;扫码结果
}

示例代码

var hwScanner = api.require('hwScanner');
hwScanner.scanPictureDirect({
    formatType: 'ALL',
    imagePath:'widget://res/123.png'
}, function(ret) {
    if (ret) {
        api.alert({msg:JSON.stringify(ret)});
    }  
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

customizedScanner

打开可自定义的二维码/条形码扫描器

customizedScanner({params}, callback(ret))

params

rect:

  • 类型:JSON 对象
  • 描述:(可选项)扫描器的位置及尺寸
  • 内部字段:
{
    x: 0,   //(可选项)数字类型;插件左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:0
    y: 0,   //(可选项)数字类型;插件左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:0
    w: 320, //(可选项)数字类型;插件的宽度;支持设置'auto';默认:所属的 Window 或 Frame 的宽度
    h: 480  //(可选项)数字类型;插件的高度;支持设置'auto';默认:所属的 Window 或 Frame 的高度
}

rectOfInterest:

  • 类型:JSON 对象
  • 描述:(可选项)在扫码区域上的扫码识别区域
  • 内部字段:
{
    x: 0,   //(可选项)数字类型;扫码识别区域左上角的 x 坐标(相对于扫码区rect);默认:0
    y: 0,   //(可选项)数字类型;扫码识别区域左上角的 y 坐标(相对于扫码区rect);默认:0
    w: 200, //(可选项)数字类型;扫码识别区域的宽度;默认:扫码区rect的宽度
    h: 200  //(可选项)数字类型;扫码识别区域的高度;默认:扫码区rect的高度
}

sound:

  • 类型:字符串
  • 描述:(可选项)扫描结束后的提示音文件路径,要求本地路径(fs://、widget://),为保证兼容性,推荐使用 wav 格式的短音频文件(仅iOS支持)

formatType:

  • 类型:字符串
  • 描述:(可选项) 二维码与一维码的类型
  • 默认值:ALL
  • 取值范围:
    • ALL:扫描所有条码类型。
    • UPC_E:UPC-E条码类型。
    • UPC_A:UPC-A条码类型。
    • QR_CODE:QR code二维码类型。
    • PDF_417:PDF417二维码类型。
    • ITF:ITF-14条码类型。
    • EAN_13:EAN-13条码类型。
    • EAN_8:EAN-8条码类型。
    • DATA_MATRIX:Data Matrix二维码类型。
    • CODE_128:Code 128条码类型。
    • CODE_93:Code 93条码类型。
    • CODE_39:Code 39条码类型。
    • CODABAR:Code Bar条码类型。
    • AZTEC:AZTEC二维码类型。

fixedOn:

  • 类型:字符串类型
  • 描述:(可选项)插件视图添加到指定 frame 的名字(只指 frame,传 window 无效)
  • 默认:插件依附于当前 window

fixed:

  • 类型:布尔
  • 描述:(可选项)插件是否随所属 window 或 frame 滚动
  • 默认值:true(不随之滚动)

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
   status: true,       //布尔类型;扫码事件类型  
   result: ''          //字符串类型;扫码结果
}

示例代码

var hwScanner = api.require('hwScanner');
hwScanner.customizedScanner({

}, function(ret) {
    if (ret) {
        api.alert({msg:JSON.stringify(ret)});
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

closeCustomizedScanner

关闭自定义大小的二维码/条码扫描器

closeCustomizedScanner()

示例代码

var hwScanner = api.require('hwScanner');
hwScanner.closeCustomizedScanner();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

hideCustomizedScanner

关闭自定义大小的二维码/条码扫描器

hideCustomizedScanner()

示例代码

var hwScanner = api.require('hwScanner');
hwScanner.hideCustomizedScanner();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

showCustomizedScanner

显示自定义大小的二维码/条码扫描器

showCustomizedScanner()

示例代码

var hwScanner = api.require('hwScanner');
hwScanner.showCustomizedScanner();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

encodeContent

将字符串生成二维码/条形码图片

encodeContent({params}, callback(ret))

params

formatType:

  • 类型:字符串
  • 描述:(可选项) 二维码与一维码的类型
  • 默认值:AZTEC
  • 取值范围:
    • ALL:所有条码类型。
    • UPC_E:UPC-E条码类型。
    • UPC_A:UPC-A条码类型。
    • QR_CODE:QR code二维码类型。
    • PDF_417:PDF417二维码类型。
    • ITF:ITF-14条码类型。
    • EAN_13:EAN-13条码类型。
    • EAN_8:EAN-8条码类型。
    • DATA_MATRIX:Data Matrix二维码类型。
    • CODE_128:Code 128条码类型。
    • CODE_93:Code 93条码类型。
    • CODE_39:Code 39条码类型。
    • CODABAR:Code Bar条码类型。
    • AZTEC:AZTEC二维码类型。
    	

content:

  • 类型:字符串
  • 描述:所要生成的二维码/条形码字符串

size:

  • 类型:JSON 对象
  • 描述:(可选项)生成图片的大小
  • 内部字段:
{
    w: 200,              //(可选项)数字类型;生成图片的宽度,默认:200
    h: 200               //(可选项)数字类型;生成图片的高度,默认:200
}

backgroundColor:

  • 类型:字符串类型
  • 描述(可选项)码图背景颜色(仅android支持)
  • 默认:‘#ffffff’

bitmapColor

  • 类型:字符串类型
  • 描述:(可选项)码图颜色(仅android支持)
  • 默认:‘#000000’

margin

  • 类型:数字类型
  • 描述:(可选项)码图边框宽度(仅android支持)
  • 默认:1

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,        //布尔型;是否生成成功
    imagePath: '',       //字符串类型;需要保存的二维码图片绝对路径
}

示例代码

var hwScanner = api.require('hwScanner');
hwScanner.encodeContent({
    content: 'http://www.apicloud.com/',
    size: {
        w: 200,
        h: 200
    }
}, function(ret, err) {
    if (ret.status) {
        api.alert({msg:JSON.stringify(ret)});
    }  
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

switchLight

打开/关闭闪光灯(在Android上,已打开扫码视图时有效)

switchLight({params})

params

status:

  • 类型:字符串
  • 描述:(可选项)打开/关闭闪光灯,默认值:'off'
  • 取值范围:
    • on(打开)
    • off(关闭)

示例代码

var hwScanner = api.require('hwScanner');
hwScanner.switchLight({
    status: 'on'
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

customizedScannerNew

打开可自定义扫描框样式、描述文案的扫码界面,调用closeCustomizedScanner关闭

customizedScannerNew({params}, callback(ret))

params

rect:

  • 类型:JSON 对象
  • 描述:(可选项)扫描器的位置及尺寸
  • 内部字段:
{
    x: 0,   //(可选项)数字类型;插件左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:0
    y: 0,   //(可选项)数字类型;插件左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:0
    w: 320, //(可选项)数字类型;插件的宽度;支持设置'auto';默认:所属的 Window 或 Frame 的宽度
    h: 480  //(可选项)数字类型;插件的高度;支持设置'auto';默认:所属的 Window 或 Frame 的高度
}

rectOfInterest:

  • 类型:JSON 对象
  • 描述:(可选项)在扫码区域上的扫码识别区域
  • 内部字段:
{
    x: 0,   //(可选项)数字类型;扫码识别区域左上角的 x 坐标(相对于扫码区rect);默认:0
    y: 0,   //(可选项)数字类型;扫码识别区域左上角的 y 坐标(相对于扫码区rect);默认:0
    w: 200, //(可选项)数字类型;扫码识别区域的宽度;默认:扫码区rect的宽度
    h: 200  //(可选项)数字类型;扫码识别区域的高度;默认:扫码区rect的高度
}

scanLine:

  • 类型:JSON 对象
  • 描述:(可选项)扫描线配置
  • 内部字段:
{
    color: 0,   //(可选项)字符串类型;颜色值,支持rgba、rgb、#;默认:#ff0000
    thickness: 0,   //(可选项)数字类型;粗细;默认:1
}

isShowClose:

  • 类型:布尔类型
  • 描述:(可选项)是否显示扫描界面关闭按钮
  • 默认:false

isShowLight:

  • 类型:布尔类型
  • 描述:(可选项)是否显示闪光灯
  • 默认:false

isShowScanDesc:

  • 类型:布尔类型
  • 描述:(可选项)是否显示描述文案
  • 默认:true

scanUIStyle:

  • 类型:数字类型
  • 描述:(可选项)带蒙版为1,只有scanUIStyle为1时isShowScanDesc、isShowLight 这三个参数才生效
  • 默认:0

cornerLenthRatio:

  • 类型:数字类型
  • 描述:(可选项)扫描框的边角长度,大于等于0 小于0.5
  • 默认:0.1

closeButton:

  • 类型:JSON 对象
  • 描述:(可选项)关闭按钮图标设置
  • 内部字段:
{   
    image:'',  //(可选项)字符串类型;图片路径,仅支持widget
    size: 24,   //(可选项)数字类型;图标大小
    left: 8,   //(可选项)数字类型;左边边距
    top:8 //(可选项)数字类型;顶部边距
}

maskColor:

  • 类型:字符串
  • 描述:(可选项)遮罩层色值,支持rgba、rgb、#
  • 默认:rgba(0,0,0,0.5)

tipString:

  • 类型:字符串
  • 描述:(可选项)识别框下面的提示文字
  • 默认:将二维码放入框内,即可自动扫描

marginB:

  • 类型:数字
  • 描述:(可选项)打开手电筒按钮距离扫描框底部的距离
  • 默认:30

sound:

  • 类型:字符串
  • 描述:(可选项)扫描结束后的提示音文件路径,要求本地路径(fs://、widget://),为保证兼容性,推荐使用 wav 格式的短音频文件

formatType:

  • 类型:字符串
  • 描述:(可选项) 二维码与一维码的类型
  • 默认值:ALL
  • 取值范围:
    • ALL:扫描所有条码类型。
    • UPC_E:UPC-E条码类型。
    • UPC_A:UPC-A条码类型。
    • QR_CODE:QR code二维码类型。
    • PDF_417:PDF417二维码类型。
    • ITF:ITF-14条码类型。
    • EAN_13:EAN-13条码类型。
    • EAN_8:EAN-8条码类型。
    • DATA_MATRIX:Data Matrix二维码类型。
    • CODE_128:Code 128条码类型。
    • CODE_93:Code 93条码类型。
    • CODE_39:Code 39条码类型。
    • CODABAR:Code Bar条码类型。
    • AZTEC:AZTEC二维码类型。

fixedOn:

  • 类型:字符串类型
  • 描述:(可选项)插件视图添加到指定 frame 的名字(只指 frame,传 window 无效)
  • 默认:插件依附于当前 window

fixed:

  • 类型:布尔
  • 描述:(可选项)插件是否随所属 window 或 frame 滚动
  • 默认值:true(不随之滚动)

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
   eventType:,         //字符串类型;交互事件类型,取值范围:
                       //close:关闭事件
                       //torchOn:闪光灯打开
                       //torchOff:闪光灯关闭
                       //scan:扫描到目标图码
   result: ''          //字符串;扫码结果,仅当eventType 为 scan 时有值
}

示例代码

var hwScanner = api.require('hwScanner');
hwScanner.customizedScannerNew({
    rect: {
        x: 0,   //(可选项)数字类型;插件左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:0
        y: 0,   //(可选项)数字类型;插件左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:0
        w: 375, //(可选项)数字类型;插件的宽度;支持设置'auto';默认:所属的 Window 或 Frame 的宽度
        h: 420  //(可选项)数字类型;插件的高度;支持设置'auto';默认:所属的 Window 或 Frame 的高度
    },
    rectOfInterest: {
        x: 64,   //(可选项)数字类型;扫码识别区域左上角的 x 坐标(相对于扫码区rect);默认:0
        y: 65,   //(可选项)数字类型;扫码识别区域左上角的 y 坐标(相对于扫码区rect);默认:0
        w: 250, //(可选项)数字类型;扫码识别区域的宽度;默认:扫码区rect的宽度
        h: 250  //(可选项)数字类型;扫码识别区域的高度;默认:扫码区rect的高度
    },
    //tipString:'放入框内扫码',
    maskColor:'rgba(0,0,0,0.5)',
    scanLine:{
        color:'#00FF00',
        thickness:2
    },
    marginB:30,
    sound: 'fs://res/222.mp3',
    formatType:'ALL'
}, function (ret) {
    if (ret) {
        //api.alert({ msg: JSON.stringify(ret) });
    }
});

可用性

iOS系统,Android系统

可提供的1.1.2及更高版本

multiCodeScanner

多码识别模式,识别到多个码时标记位置,点击小红点图标返回对应的码值,点击取消按钮重新扫描

multiCodeScanner(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
   status: true,       //布尔类型;扫码事件类型  
   result: ''        //字符串类型;扫码结果
}

示例代码

var hwScanner = api.require('hwScanner');
hwScanner.multiCodeScanner(function(ret, err) {
    alert(JSON.stringify(ret));
});
}

可用性

iOS系统,Android系统

可提供的1.3.0及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/10/10