前言

  前几天,小编外出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”函数接管校验权限后果@Overridepublic 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。

    @Overrideprotected 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