鸿蒙开源三方组件--code-scanner 原创 精华

mb60ffc367523f3
发布于 2021-7-27 18:13
浏览
2收藏

1.介绍

这个三方库主要实现了相机的一些功能和条形码扫描的功能。其中,
相机的功能有:

  • 自动对焦和闪光灯控制
  • 前后摄像头
  • 可定制取景器
  • 触摸对焦

条形码扫描:(该功能调用三方库zxing实现)

  • 一维码扫描
  • 二维码扫描

条形码扫描支持的格式如下:

1D product 1D industrial 2D
UPC-A Code 39 QR Code
UPC-E Code 93 Data Matrix
EAN-8 Code 128 Aztec
EAN-13 Codabar PDF 417
ITF MaxiCode
RSS-14
RSS-Expanded

2.依赖

(1). 在工程的build.gradle的allprojects中,添加HAR所在的Maven仓地址:

repositories {
    maven {
        url 'https://s01.oss.sonatype.org/content/repositories/releases/' 
    }
}

(2).在应用模块的build.gradle的dependencies闭包中,添加如下代码:

dependencies {
    implementation ' io.github.dzsf:code-scanner:1.0.1 '
}

3.使用说明

(1).将相机权限添加到config.json(不要忘记动态权限):

{
    "reqPermissions": [
          {
            "name": "ohos.permission.CAMERA",
            "reason": "Need camera permission",
            "usedScene": {
              "ability": [
                "com.budiyev.ohos.libdemoapp.codescanner.MainAbility",
                "com.budiyev.ohos.libdemoapp.codescanner.CodeScannerAbility"
              ],
              "when": "always"
            }
          }
        ]
}

(2).在layout文件中定义视图:

<?xml version="1.0" encoding="utf-8"?>
<StackLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    xmlns:app="http://schemas.huawei.com/res/ohos-auto"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:id="$+id:stack_layout">

    <com.budiyev.ohos.codescanner.CodeScannerView
        ohos:id="$+id:scanner_view"
        ohos:height="match_parent"
        ohos:width="match_parent"
        app:autoFocusButtonColor="#FFFFFFFF"
        app:autoFocusButtonVisible="true"
        app:flashButtonColor="#FFFFFFFF"
        app:flashButtonVisible="true"
        app:frameColor="#FFFFFFFF"
        app:frameCornersSize="50"
        app:frameCornersRadius="0"
        app:frameAspectRatioWidth="1"
        app:frameAspectRatioHeight="1"
        app:portraitFrameAspectRatioWidth="16"
        app:portraitFrameAspectRatioHeight="9"
        app:frameSize="0.75"
        app:frameThickness="2"
        app:maskColor="#77000000"/>
</StackLayout>

(3).将以下代码添加至自己的Ability和AbilitySlice中:

public class CodeScannerAbility extends Ability {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setMainRoute(CodeScannerSlice.class.getName());
    }
}
public class CodeScannerSlice extends AbilitySlice {
    private CodeScanner mCodeScanner;
    private CodeScannerView mCodeScannerView;

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_code_scanner);

        mCodeScannerView = (CodeScannerView) findComponentById(ResourceTable.Id_scanner_view);

        mCodeScanner = new CodeScanner(this, mCodeScannerView);

        mCodeScanner.setDecodeCallback(result -> getUITaskDispatcher().syncDispatch(() ->
                new CommonDialog(getContext())
                        .setTitleText("Scan result")
                        .setTitleSubText("Format: " + result.getBarcodeFormat())
                        .setContentText(result.getText())
                        .setAlignment(LayoutAlignment.CENTER)
                        .show()));

        mCodeScanner.setErrorCallback(error -> getUITaskDispatcher().syncDispatch(() ->
                new ToastDialog(getContext())
                        .setText("Error:" + error)
                        .setAlignment(LayoutAlignment.CENTER)
                        .show()));
    }

    @Override
    public void onActive() {
        super.onActive();
        mCodeScanner.startPreview();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }

    public void onBackground() {
        super.onBackground();
    }

    public void onStop() {
        mCodeScanner.stopPreview();
        WindowManager.getInstance().getTopWindow().get().setTransparent(false);
        super.onStop();
    }

    @Override
    public void onOrientationChanged(AbilityInfo.DisplayOrientation displayOrientation) {
        super.onOrientationChanged(displayOrientation);
        mCodeScannerView.setDisplayOrientation(displayOrientation);
    }
}

4.效果展示

鸿蒙开源三方组件--code-scanner-鸿蒙开发者社区

5.相关资料

项目地址:https://gitee.com/openneusoft/code-scanner
IDE官方下载地址:https://developer.harmonyos.com/cn/develop/deveco-studio

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
3
收藏 2
回复
举报
2条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

扫二维码可以说是日常生活必不可少的一环了。

回复
2021-7-27 18:35:52
XY道衍
XY道衍

很实用

回复
2021-7-29 10:31:29
回复
    相关推荐