华为HMS Scankit 扫码SDK集成-实现扫一扫功能

最近在做一个二维码扫描登录的功能,利用项目里原有的ZXing,不能很快的扫描出那些不太清晰的二维码,一开始我以为是因为设备带的摄像头分辨率太低的原因,没法改,最后尝试了一下华为HMS Scankit的demo,发现华为这个可以完美解决问题;

其中也找到了好些基于ZXing 的修改的demo,也可以扫描出,但是感觉没有华为的更清晰,所以这边主要讲解一下华为HMS Scankit 扫码SDK集成的简单操作;

1.配置HMS Core SDK的Maven仓地址

根目录build.gradle

buildscript {
    repositories {
        google()
        jcenter()
        // 配置HMS Core SDK的Maven仓地址。
        maven {url 'https://developer.huawei.com/repo/'}
    }
    dependencies {
        ...
        // 增加AGC插件配置,请您参见AGC插件依赖关系选择合适的AGC插件版本。
        classpath 'com.huawei.agconnect:agcp:1.6.0.300'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        // 配置HMS Core SDK的Maven仓地址。
        maven {url 'https://developer.huawei.com/repo/'}
    }
} 

(有的博客或者官网第一步要 添加当前应用的AppGallery Connect配置文件  , 如果我们的应用不需要上传到各大商店的话,可以暂时不考虑这个)

2.添加编译依赖

应用级的“build.gradle”文件

Scan Kit提供两种SDK,您可以根据需求选择合适的SDK

dependencies{
  //implementation 'com.huawei.hms:scan:1.3.2.300'
  implementation 'com.huawei.hms:scanplus:1.3.2.300'
 }

文件头部声明下一行添加如下配置

apply plugin: 'com.huawei.agconnect'
或者
plugins {
    id 'com.android.application'
    //添加如下配置
    id 'com.huawei.agconnect'
}

注:
如果在非华为手机使用多码能力接口,请使用Scan SDK-Plus,否则会影响识别。
com.huawei.hms:scanplus:{version}

3.配置混淆脚本

在应用级根目录下打开混淆配置文件“proguard-rules.pro”,加入排除HMS Core SDK的混淆配置脚本。

(我原有的项目中也开启了混淆,但是加入HMS Core SDK后,一直混淆不通过,会提示很多的Warnings,提示android studio混淆打包:transformClassesAndResourcesWithProguardForRelease‘,,,记录一下我的方法,因为看AS编译错误,有个显示是java heap oom,我就把gradle.properties  中的 org.gradle.jvmargs=-Xmx4096m)

-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.huawei.hianalytics.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}

4.指定权限

  1. AndroidManifest.xml中指定相应的权限
  2. 代码中动态申请一下权限
  3. 校验是否开启相应的权限,决定是否继续扫码
    <!--permission for WiFI post processing,not for scankit itself-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    <!--camera permission-->
    <uses-permission android:name="android.permission.CAMERA" />
    <!--read permission for Bitmap Mode-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!--write permission for save QRCODE Bitmap,not for scankit itself-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-permission android:name="android.permission.VIBRATE" />

    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
//CAMERA_REQ_CODE为用户自定义,用于接收权限校验结果
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE}, CAMERA_REQ_CODE);
//实现“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) {
        //调用扫码接口,构建扫码能力,需您实现
        ...
    }
}

5.demo

可参考如下的demo

hms-scan-demo: 华为统一扫码服务示例代码。提供便捷的条形码和二维码扫描、解析、生成能力,支持Default View、Customized View、Bitmap和MultiProcessor等四种扫码方式和生成码方式。

6.官网

文档中心

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值