【鸿蒙实战开发】Harmony 自定义扫一扫组件

10 篇文章 0 订阅
10 篇文章 0 订阅

鸿蒙扫一扫组件


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

image.png

使用示例

  • 导入
`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: '图库权限被拒绝' })
 }
})

写在最后

●如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我两个小忙:
●点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
●关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值