本文介绍如何在 HarmonyOS NEXT 中使用相关 SDK。
权限添加
在 entry
的 module.json5
中添加相机权限。
"requestPermissions": [
{
"name": "ohos.permission.CAMERA",
"reason": "$string:permission_reason_camera",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when": "always"
}
}
]
API 使用
默认 UI
实现 ScanInterface 接口
import { ScanInterface } from '@mpaas/scanapp';
const params: Map<string, Object> = new Map()
params.set('showAlbum', true) //是否显示相册入口
params.set('open','轻触照亮') // 环境提示文案 不超过4个字符
params.set('close','轻触关闭') // 环境提示文案 不超过4个字符
params.set('more','多码识别') // 多码识别提示文案
params.set('targetColor',Color.Red) // 命中二维码后 效果颜色
params.set('fullScreen',true) //是否开启全屏渲染
class ScanDefault implements ScanInterface {
getResult(result: string): void { // 获取扫码结果
try {
promptAction.showDialog({
message: result,
})
} catch (error) {
console.error('start fail error = ' + JSON.stringify(error))
}
处理路由逻辑
router.back() || router.pushUrl()
}
customParams?: Map<string, Object> | undefined = params
}
实现 ScanManager
import { ScanManager } from '@mpaas/scanapp';
跳转前对 ScanManager 初始化
ScanManager.defaultManager(new ScanDefault())
引入 Scan 组件
在组件外调用
import ('@mpaas/scanapp/Index')
跳转扫一扫页面
router.pushNamedRoute({name: 'mPaasScanPage'})
重要
这里使用 router
的自定义 page name 的形式跳转,目前写死的扫一扫组件 URL 为 mPaasScanPage
。
自定义 UI 页面
引入 Scan 组件
import { MyRect, ScanCustomPage, WrapperDecodeResult } from '@mpaas/scanapp'
使用
RelativeContainer() {
ScanCustomPage({
scanCallback: this.handleResult, //获取扫描结果的自定义方法
customUi: true, // 识别后展示自定义结果页,false时展示默认结果
flashIsOn:this.flashIsOn, // 闪光灯监控
customRect: new MyRect(100,300,200,200), // 自定义识别区域裁剪
jumpToAlbum: this.jumpToAlbum, // 跳转相册监听
setupCamera: this.setupCamera, // 连续识别监听
})
}
handleResult = (results: Array<WrapperDecodeResult>) => { //识别结果为多码数组
try {
promptAction.showDialog({
message: results[0].codeContent,
})
} catch (error) {
console.error('start fail error = ' + JSON.stringify(error))
}
this.setupCamera = !this.setupCamera //开启连续识别,不开启时请不要传递setupCamera参数
}
customRect: new MyRect(100,300,200,200), // 自定义识别区域裁剪
以手机屏幕为标准MyRect(x,y,width,height)
x,y为裁剪框左上角原点的屏幕坐标
该文章对您有帮助吗?