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
          })
        })
    })
相关推荐
●VON4 分钟前
DeepSeek-V3.2 模型在 OpenJiuWen 中的部署实践
学习·华为·von·openjiuwen
ChinaDragon27 分钟前
HarmonyOS:短时任务(ArkTS)
harmonyos
ChinaDragon27 分钟前
HarmonyOS:长时任务(ArkTS)
harmonyos
liuhaikang39 分钟前
【鸿蒙HarmonyOS Next App实战开发】古诗书院 应用技术实践
华为·harmonyos
哈哈你是真的厉害1 小时前
Windows系统通过wsl Ubuntu24.04本地安装OpenJiuwen Studio的完整安装教程
人工智能·华为·ai·大模型·agent·智能体·openjiuwen
胡琦博客1 小时前
基于开发者空间鸿蒙云手机体验鸿蒙开发
华为·智能手机·harmonyos
kirk_wang2 小时前
Flutter `audio_service` 在鸿蒙端的后台音频服务适配实践
flutter·移动开发·跨平台·arkts·鸿蒙
namehao46513 小时前
从HarmonyOS基础认证到赋能资源建设:我的鸿蒙开发进阶之路
华为·harmonyos
航Hang*15 小时前
第十五章:网络系统建设与运维(高级)—— 总复习
网络·华为·ensp·期末·复习
前端不太难15 小时前
用一张“状态扩散图”,定位 RN 列表性能风险
react.js·harmonyos