HarmonyOS 鸿蒙Next detectBarcode接口能力问题

HarmonyOS 鸿蒙Next detectBarcode接口能力问题 我按照以下文档使用detectBarcode.decode的识图二维码扫码能力

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/scan-imagedecode-V5

运行在模拟器上报以下错误

Device info:emulator

Build info:emulator 5.0.0.25(SP37DEVC00E25R4P11log)

Fingerprint:a5572fb9d9a7494e164622f6bbb9654de3ad3c8045afb1cbdab15e2f247da911

Module name:com.example.test_sensor

Version:1.0.0

VersionCode:1000000

PreInstalled:No

Foreground:No

Pid:24637

Uid:20020045

Reason:TypeError

Error name:TypeError

Error message:Cannot read property decode of undefined

Stacktrace:

at initQrCode (entry/src/main/ets/pages/Index.ets:63:7)

at anonymous (entry/src/main/ets/pages/Index.ets:168:11)

SourceCode:

detectBarcode.decode(inputImage, (error: BusinessError, result: Array<scanBarcode.ScanResult>) => {
  let inputImage: detectBarcode.InputImage = { uri: 'file://media/Photo/2/Image/Image.jpeg' }
  detectBarcode.decode(inputImage, (error: BusinessError, result: Array<scanBarcode.ScanResult>) => {
    if (error && error.code) {
      hilog.error(0x0001, '[Scan Sample]',
        `Failed to get ScanResult by callback. Code: ${error.code}, message: ${error.message}`);
      return;
    }
    hilog.info(0x0001, '[Scan Sample]',
      `Succeeded in getting ScanResult by callback, result is ${JSON.stringify(result)}`);
  });
});

‘file://media/Photo/2/Image/Image.jpeg’ 是我通过文档样例的picker获取到的结果地址,是实际选取图片的地址,运行上述代码需要加上picker选图片获取到图片地址

try-catch上述代码没catch到有用的error信息。

如果是模拟器对于这个接口不支持,那我要怎么获取到 哪些接口能力在模拟器上不支持的信息呢?以及目前真机和模拟器都有哪些具体区别有文档说明吗


更多关于HarmonyOS 鸿蒙Next detectBarcode接口能力问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

这边测试使用detectBarcode.decode的demo没问题

import { scanBarcode, detectBarcode } from '@kit.ScanKit';

import { picker } from '@kit.CoreFileKit';

import { hilog } from '@kit.PerformanceAnalysisKit';

import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@Component
struct RefreshExample {
  test() {

    // 通过picker拉起图库并选择图片

    let photoOption = new picker.PhotoSelectOptions();

    photoOption.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;

    photoOption.maxSelectNumber = 1;

    let photoPicker = new picker.PhotoViewPicker();

    photoPicker.select(photoOption).then((result) => {

      // 定义识码参数inputImage,其中uri为picker选择图片

      let inputImage: detectBarcode.InputImage = { uri: result.photoUris[0] }

      // 调用图片识码接口

      detectBarcode.decode(inputImage, (error: BusinessError, result: Array<scanBarcode.ScanResult>) => {

        if (error && error.code) {

          hilog.error(0x0001, '[Scan Sample]',
            `Failed to get ScanResult by callback. Code: ${error.code}, message: ${error.message}`);

          return;

        }

        hilog.info(0x0001, '[Scan Sample]',
          `Succeeded in getting ScanResult by callback, result is ${JSON.stringify(result)}`);

      });

    })

  }

  @State isRefreshing: boolean = false
  count: number = 89

  build() {

    Column() {

      Button('点我选择图片')

        .onClick(() => {

          this.test()

        })

    }.grayscale(1)

  }
}

参考链接:使用模拟器运行应用/元服务-应用/元服务运行-DevEco Studio - 华为HarmonyOS开发者

更多关于HarmonyOS 鸿蒙Next detectBarcode接口能力问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


let inputImage: detectBarcode.InputImage = { uri: 'file://media/Photo/2/Image/Image.jpeg' }这句放到detectBarcode.decode外层试试

针对帖子标题“HarmonyOS 鸿蒙Next detectBarcode接口能力问题”,以下是对该问题的直接回答:

HarmonyOS鸿蒙Next版本中的detectBarcode接口主要用于条形码检测功能。该接口能够识别并解析多种类型的条形码,如EAN-13、EAN-8、Code 39等,具体能力取决于鸿蒙系统的版本更新以及设备硬件的支持情况。

若在使用detectBarcode接口时遇到问题,可能的原因包括但不限于:

  1. 系统版本不兼容:确保你的鸿蒙系统版本支持该接口的所有功能。
  2. 设备硬件限制:某些设备可能因摄像头性能或其他硬件因素,无法完全支持条形码检测。
  3. 接口使用错误:检查你的代码是否正确调用了detectBarcode接口,并传入了正确的参数。
  4. 权限问题:确保你的应用已获取必要的摄像头访问权限。

为了排查问题,你可以尝试以下步骤:

  • 查阅最新的鸿蒙系统开发者文档,确认detectBarcode接口的具体要求和支持的条形码类型。
  • 在不同的设备上进行测试,以排除硬件因素的影响。
  • 仔细检查并调试你的代码,确保接口调用正确无误。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部