Harmony扫一扫自定义组件

鸿蒙扫一扫组件



  • 利用鸿蒙系统customScan能力
  • 支持选择图库扫码能力
  • 支持开启关闭闪光灯
  • 支持UI定制
  • 手指撑开缩小控制镜头缩放倍数

在这里插入图片描述

使用示例

  • 导入
import { Scanner, ScannerController } from '@coner/Scanner';
  • 使用
Scanner({
  onScanResult: (code: ResultState, value: string) => {
    if (code == ResultState.Success) {
      promptAction.showToast({ message: value })
    }
  },
  onCameraReject: () => {
    promptAction.showToast({ message: '摄像头权限被拒绝' })
  },
  onMediaReject: () => {
    promptAction.showToast({ message: '图库权限被拒绝' })
  }
})

安装使用


ohpm i @coner/scanner

Scanner 属性


字段名类型默认值说明
albumsShowbooleantrue相册是否显示
albumsIconResourceStr$r(‘app.media.scanner_albums’)相册图标
albumsIconSizeLength64相册图标大小
albumsTextstring‘相册’相册文案
albumsTextSizeLength16相册文案文字大小
albumsTextColorResourceColorColor.White相册文案颜色
lightShowbooleantrue手电筒是否显示
lightCloseIconResourceStr$r(‘app.media.scanner_light_close’)手电筒关闭图标
lightOpenIconResourceStr$r(‘app.media.scanner_light_open’)手电筒开启图标
lightIconSizeLength64手电筒图标大小
lightOpenTextstring‘开灯’手电筒开启文案
lightCloseTextstring‘关灯’手电筒关闭文案
lightTextSizeLength16手电筒文字大小
lightTextColorResourceColorColor.White手电筒文案颜色
tipsShowbooleantrue提示词是否显示
tipsstring‘将条码、二维码放入框内,即可自动扫描’提示词内容
tipsTextColorResourceColorColor.White提示词文字颜色
tipsTextSizeLength14提示词文字大小
tipsTopMarginLength10提示词距离上面的间距
maskColorResourceColor‘#7f000000’遮罩颜色
scannerSizenumber256扫描框宽高
cornerLineWidthnumber3角上的框宽度
cornerLineLengthnumber30角上的框长度
cornerLineColorResourceColorColor.White角上的框颜色
cornerLineShowbooleantrue四个角是否显示
scanTopMarginnumber100扫描框距离上面的间距
scanLineWidthLength1扫描线宽度
scanLineLengthLength‘100%’扫描线长度
scanLineColorResourceColorColor.White扫描线颜色
scanLineShowbooleantrue扫描线是否显示
scanAnimTimenumber1500动画时间
scanIntervalTimenumber1000扫码间隔时间
disableCheckAreabooleanfalse是否禁止检查二维码在框中
areaOffsetnumber100二维码在框中的偏移量
controllerScannerControllerthis.scannerController扫码控制类
onScanResult(code: ResultState, value: string) => voidundefined扫码结果回调函数
onCameraGrant() => voidundefined摄像头权限同意回调
onCameraReject() => voidundefined摄像头权限拒绝回调
onMediaGrant() => voidundefined读取媒体权限同意回调
onMediaReject() => voidundefined读取媒体权限拒绝回调

ScannerController 方法

方法入参返回值说明
openLightvoidvoid打开闪光灯
closeLightvoidvoid关闭闪光灯
toggleLightvoidvoid闪光点开关
pickPhotovoidvoid选择图片识别二维码
setZoomzoom: numbervoid设置扫码镜头放大比例
getZoomvoidnumber获取扫码镜头放大比例
getLightStatusvoidboolean获取闪光灯开启状态
releaseScanvoidvoid释放相机资源
startScanvoidvoid启动扫码
rescanvoidvoid重启相机扫码
scanUriuri: stringvoid扫描图片资源uri
scanUrlurl: stringvoid扫描网络图片url
scanPixelMappixelMap: PixelMapvoid扫描图片PixelMap

声明权限

entry module下的module.json5中新增如下配置

{
  "module": {
    // ...
    'requestPermissions': [
      {
        "name": "ohos.permission.INTERNET",
      },{
        "name": "ohos.permission.READ_MEDIA",
        "reason": "$string:reasonReadWriteMedia",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      }, {
        "name": "ohos.permission.CAMERA",
        "reason": "$string:reasonRequestCamera",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      }
    ]
  }
}

自定义UI

Scanner({
  cornerLineShow: false, // 隐藏四个角
  scanLineShow: false, // 隐藏扫描线
  albumsShow: false, // 隐藏图库按钮和文字
  lightShow: false, // 隐藏闪光点按钮和文字
  tipsShow: false, // 隐藏提示词
  maskColor: Color.Transparent, // 蒙层透明
  onScanResult: (code: ResultState, value: string) => {
    if (code == ResultState.Success) {
      promptAction.showToast({ message: value })
    }
  },
  onCameraReject: () => {
    promptAction.showToast({ message: '摄像头权限被拒绝' })
  },
  onMediaReject: () => {
    promptAction.showToast({ message: '图库权限被拒绝' })
  }
})

组件地址

Scanner三方库中心仓地址

交流催更

QQ君羊: 571144615

在这里插入图片描述

感谢支持

  • 28
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值