HarmonyOS Next鸿蒙扫一扫功能实现

直接使用的是华为官方提供的api,封装成一个工具类方便调用。

TypeScript 复制代码
import { common } from '@kit.AbilityKit';
import { scanBarcode, scanCore } from '@kit.ScanKit';


export namespace ScanUtil {
  export async function startScan(context: common.Context) : Promise<string> {
    if (canIUse('SystemCapability.Multimedia.Scan.Core')) {
      // 定义扫码参数options
      let options: scanBarcode.ScanOptions = {
        scanTypes: [scanCore.ScanType.ALL],
        enableMultiMode: true,
        enableAlbum: true
      };

      if (canIUse('SystemCapability.Multimedia.Scan.ScanBarcode')) {
        let result: scanBarcode.ScanResult = await scanBarcode.startScanForResult(context, options)
        return result.originalValue
      }
    }
    throw new Error('该设备不支持扫码功能')
  }
}

使用方法:

TypeScript 复制代码
Button('打开扫一扫')
    .onClick(()=>{
      ScanUtil.startScan(getContext())
        .then((result)=>{
          //成功识别到二维码内容
          promptAction.showToast({
            message: `result:${result}`,
            duration: 3000
          })
        })
        .catch((error:BusinessError)=>{
          //一般是模拟器会跑到这里报异常
          promptAction.showToast({
            message: `error:${error}`,
            duration: 3000
          })
        })
    })
相关推荐
一起养小猫4 分钟前
Flutter for OpenHarmony 实战:推箱子游戏完整开发指南
flutter·游戏·harmonyos
浩宇软件开发1 小时前
基于OpenHarmony鸿蒙开发诗中华词鉴赏APP
harmonyos·arkts·arkui
仓颉编程语言1 小时前
鸿蒙仓颉编程语言挑战赛二等奖作品 :以仓颉之码,筑智慧学园——基于仓颉与OpenHarmony的智慧校园协同管控系统实践
华为·鸿蒙·仓颉编程语言
全栈开发圈1 小时前
干货分享|HarmonyOS核心技术理念
wpf·鸿蒙
Swift社区2 小时前
鸿蒙底层实现:ObservedV2 如何实现状态响应式更新
华为·harmonyos
前端不太难3 小时前
HarmonyOS 游戏运行态的完整状态机图
游戏·状态模式·harmonyos
一起养小猫3 小时前
Flutter for OpenHarmony 进阶:Timer组件与倒计时系统深度解析
android·网络·笔记·flutter·json·harmonyos
mocoding4 小时前
已经完成鸿蒙化的Flutter专业动画工具箱animations库实战示例
flutter·华为·harmonyos·鸿蒙
jin4213524 小时前
基于React Native鸿蒙跨平台一款阅读追踪应用完成进度条的增加与减少,可以实现任务的进度计算逻辑
javascript·react native·react.js·ecmascript·harmonyos
新技术克4 小时前
高级进阶 React Native 鸿蒙跨平台开发:NativeEventEmitter 原生事件发射器
javascript·react native·react.js·harmonyos