关于hms-core:二维码距离远反光遮挡怎么办不用担心华为HMS-Scan-kit-统统帮您搞定

40次阅读

共计 5441 个字符,预计需要花费 14 分钟才能阅读完成。

前言

  前几天,小编外出 shopping 完,美滋滋的筹备开车回家,后果被车库的领取二维码拦住了,间隔太远,始终无奈辨认,前面的车主还使劲督促,搞得我很焦躁啊。回家后和敌人吐槽,没失去刺激不说,还强行退出了一个对于二维码反光、遮挡的大型吐槽现场。

  扫码性能不是曾经应用很久了吗?怎么还有这么多问题?

  起初无心中在外网上看到一篇对于华为 HMS Scan kit 的介绍,小编顺着文章发现在华为开发者联盟网站上能够下载 APK 体验,连忙试了试成果。华为 HMS Scan kit 性能果然弱小,轻松解决远距离、反光、损坏、遮挡等简单扫码场景。

成果展现

远距离扫码

反光扫码

损坏、遮挡扫码

  小编发现,华为 HMS Scan kit 还能够实现任意角度扫码、曲面扫码、同时辨认多个码等,反对 13 种寰球支流码,齐全能够满足生存、工作等各类场景应用需要。

  大家能够戳下方链接,亲自感触下:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Examples-V5/android-sample-code-0000001050734383-V5

  重点来了,这么好用、弱小的扫码服务性能,怎么取得呢?

  不要焦急,小编曾经帮大家把开发流程搬过去了,快来集成吧!

开发实战

1 配置 AppGallery Connect

  在开发利用前,须要在 AppGallery Connect 中配置相干信息。包含:

    • 注册成为开发者。
    • 创立利用。

      这里就不多介绍了,大家能够参考官网操作:
    https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-get-started#createproject

    2 集成 HMS Core SDK

    2.1 增加以后利用的 AppGallery Connect 配置文件

      如果在 AppGallery Connect 中开明了相干服务则须要将“agconnect-services.json”文件增加到您的 App 中。

      1、登录 AppGallery Connect 网站,点击“我的我的项目”。

      2、在我的项目列表中找到您的我的项目,在我的项目中点击须要集成 HMS Core SDK 的利用。

      3、在“我的项目设置 > 惯例”页面的“利用”区域,点击“agconnect-services.json”下载配置文件。

      4、将“agconnect-services.json”文件拷贝到利用级根目录下。

    2.2 配置 HMS Core SDK 的 Maven 仓地址
      1、关上 Android Studio 我的项目级“build.gradle”文件。

      2、增加 HUAWEI agcp 插件以及 Maven 代码库。

    • 在“allprojects > repositories”中配置 HMS Core SDK 的 Maven 仓地址。
    • 在“buildscript > repositories”中配置 HMS Core SDK 的 Maven 仓地址。
    • 如果 App 中增加了“agconnect-services.json”文件则须要在“buildscript > dependencies”中减少 agcp 配置。
    buildscript {
        repositories {google()
            jcenter()
            maven {url 'https://developer.huawei.com/repo/'}
        }
        dependencies {
            ...
            classpath 'com.huawei.agconnect:agcp:1.3.1.300'
        }
    }
      
    allprojects {
        repositories {google()
            jcenter()
            maven {url 'https://developer.huawei.com/repo/'}
        }
    }

    阐明:Maven 仓地址无奈间接在浏览器中关上拜访,只能在 IDE 中配置。如需增加多个 Maven 代码库,请将华为公司的 Maven 仓地址配置在最初。
    2.3 增加编译依赖
    1、关上 Android Studio 我的项目级“build.gradle”文件。

    2、援用 SDK。
    华为 Scan Kit 提供两种 SDK,一般版和 plus 版。plus 版在非华为手机上成果好点儿但 SDK 略大。大家能够依据需要抉择适合的 SDK,版本填写理论的 SDK 版本号就能够了。

    例如,应用 Scan Kit SDK,在“dependencies”中增加如下编译依赖,{version}须要替换为 SDK 以后版本:implementation ‘com.huawei.hms:scan:1.2.2.300’。

    dependencies{implementation 'com.huawei.hms:scan:1.2.2.300'}

    3、在文件头 apply plugin: ‘com.android.application’ 下一行增加如下配置。

      **2.4  同步工程 **
           在实现以上的配置后,点击工具栏中的 gradle 同步图标,实现“build.gradle”文件的同步,将相干依赖下载到本地。![在这里插入图片形容](https://img-blog.csdnimg.cn/20200928162619474.png#pic_center)
    

    3 增加权限

    1、在调用 Scan kit 时,开发者须要先在 Manifest 中指定相应的权限。
      构建相机扫码性能,须要申请“CAMERA”(相机权限);构建导入图片扫码性能,须要申请“READ_EXTERNAL_STORAGE”(读文件权限)。

    <!-- 相机权限 -->
    <uses-permission android:name="android.permission.CAMERA" />
    <!-- 读文件权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!-- 应用个性 -->
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />

    2、在 Manifest 中指定权限后,还须要在代码中动静申请一下权限。

    //CAMERA_REQ_CODE 为用户自定义,用于接管权限校验后果 
    ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE}, CAMERA_REQ_CODE);

    3、校验是否开启相应的权限,决定是否持续扫码。

    // 实现“onRequestPermissionsResult”函数接管校验权限后果
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        // 判断“requestCode”是否为申请权限时设置申请码 CAMERA_REQ_CODE,而后校验权限开启状态
        if (requestCode == CAMERA_REQ_CODE && grantResults.length == 2 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
            // 调用扫码接口,构建扫码能力,需开发者实现
            ...
        }
    }

    4 利用开发

      华为 HMS Scan kit 提供 Default view mode、Customized view mode、Bitmap mode、Multi Processor mode 4 种调用形式,开发者能够依据需要构建扫码性能。

      小编这里介绍下 customized view mode 开发过程。
    1、自定义扫码页面元素。
    (1)自定义题目
    定义文本信息为“title”变量。

    <TextView 
        android:layout_marginStart="10sp" 
        android:layout_toEndOf="@+id/back_img" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:gravity="center_vertical" 
        android:text="@string/title" 
        android:textAllCaps="false" 
        android:textColor="#FFFFFF" 
        android:textSize="20sp" 
        android:textStyle="bold" />

    (2)自定义返回按钮

    定义 id 为“back_img”的页面视图,并绑定点击返回操作。

    (3)自定义闪光灯按钮

    定义闪光灯按钮的页面视图,并绑定开启敞开操作。

    (4)自定义扫码界面

    绘制扫码框。

    <RelativeLayout 
        android:layout_width="match_parent" 
        android:layout_height="match_parent"> 
        <ImageView 
            android:layout_width="match_parent" 
            android:layout_height="match_parent" 
            android:layout_centerInParent="true" 
            android:layout_centerHorizontal="true" 
            android:background="#FF000000" 
            android:alpha="0.1" /> 
        <TextView 
            android:layout_marginTop="225dp" 
            android:layout_centerHorizontal="true" 
            android:text="@string/scan_tip" 
            android:textAllCaps="false" 
            android:textColor="#FFFFFF" 
            android:textSize="15sp" 
            android:textStyle="bold" 
            android:layout_height="20dp" 
            android:layout_width="220dp" /> 
        <!-- 设置扫码框 --> 
        <ImageView 
            android:layout_width="300dp" 
            android:layout_height="300dp" 
            android:layout_centerInParent="true" 
            android:layout_centerHorizontal="true" 
            android:background="@drawable/cloors" /> 
    </RelativeLayout>

    2、通过 Customized view 实现相机扫码性能。
    (1)创立 Remote View,并加载到 Activity 布局。
    (2)对 Remote View 设置后果回调监听,获取扫码后果对象 HMS Scan。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        …
        // 辨认后果回调事件订阅 
        remoteView.setOnResultCallback(new OnResultCallback() { 
            @Override 
            public void onResult(HmsScan[] result) { 
                // 获取到扫码后果 HmsScan
                showResult(result); 
            } 
        });
    }

    结束语

      华为 Scan kit 依靠华为计算机视觉畛域弱小能力,反对远距离码、小型码的检测和主动放大,无效解决反光、遮挡、污损、含糊等简单扫码场景,反对 Android 和 iOS 系统集成,帮忙开发者疾速构建关联服务,晋升用户扫码体验和成功率。

      Scan Kit 的示例代码已在 Github 开源:https://github.com/HMS-Core/h…

    更具体的开发指南请参考华为开发者联盟官网

    https://developer.huawei.com/…
    欲了解更多详情,请参阅:

    华为开发者联盟官网:https://developer.huawei.com/consumer/cn/hms

    获取开发领导文档:https://developer.huawei.com/consumer/cn/doc/development

    参加开发者探讨请到 Reddit 社区:https://www.reddit.com/r/HMSCore/

    下载 demo 和示例代码请到 Github:https://github.com/HMS-Core

    解决集成问题请到 Stack Overflow:https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest


    原文链接:https://developer.huawei.com/…
    作者:say hi

    正文完
     0