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
          })
        })
    })
相关推荐
2401_8604947012 分钟前
在React Native鸿蒙跨平台开发中实现一个桶排序算法,如何使用任何排序算法对每个桶中的元素进行排序,再将所有桶中的元素合并成一个有序数组
javascript·react native·react.js·ecmascript·排序算法·harmonyos
2401_8604947037 分钟前
在React Native鸿蒙跨平台开发中实现一个选择排序算法,如何实现列表项重排序,如任务管理应用中调整任务的优先级
react native·排序算法·harmonyos
2401_8603195243 分钟前
【精通篇】打造React Native鸿蒙跨平台开发高级复合组件库开发系列:Circle 环形进度条(圆环形的进度条组件)
react native·react.js·harmonyos
爱吃大芒果1 小时前
Flutter 开发环境配置避坑指南:Windows/macOS/Linux 全平台
flutter·华为·harmonyos
花先锋队长1 小时前
华为Mate X7测评:折叠屏的尽头,是让你忘记它在折叠?
科技·华为·智能手机·harmonyos
赵财猫._.1 小时前
React Native鸿蒙开发实战(一):环境搭建与第一个应用
react native·react.js·华为·harmonyos
Digitally1 小时前
如何将照片从华为传输到Mac?
macos·华为
赵财猫._.1 小时前
【Flutter x 鸿蒙】第六篇:状态管理、数据持久化与分布式数据
分布式·flutter·harmonyos
2401_860494701 小时前
在React Native鸿蒙跨平台开发中实现一个基数排序算法,如何进行找到最大数:遍历数组找到最大值呢?
javascript·算法·react native·react.js·排序算法·harmonyos
ElenaYu1 小时前
在 Mac 上用 scrcpy 投屏 Honor 300 Pro(鸿蒙/Android)并支持鼠标点击控制
android·macos·harmonyos