带你彻底弄明白!Android---教你如何开发扫二维码功能

本文介绍了在停车场app开发中,华为ScanKit作为免费的扫码解决方案,其在复杂场景下的优秀表现,包括抗干扰、远距离识别和高精度。通过简单的集成步骤和实例展示,作者分享了从集成到实战的全过程,是疫情期间的技术福利。
摘要由CSDN通过智能技术生成

前言

最近要做一个停车场扫码收费的app,在网上搜了一圈,首先接触到了ZXing,上手试了下,集成过程不复杂,但是感觉效果欠佳,比如距离稍微远点儿就扫不出来了,另外角度对的不好,反光或者光线比较暗的时候,成功率也比较低,集成好给我们老大看了下,感觉不是很满意。最近偶尔看到了华为一个发布会里面有介绍扫码功能,稍微研究了下,居然是一款免费扫码神器,官方称之为Scan Kit,号称还同时支持Android和iOS,半信半疑上手搞了一把发现效果还真不错!测了下发现对于一些有反光,污损,形变,超远距离的场景都能很好地识别!

今天简单总结了下,分享给大家,码字不易,也算是疫情期间,给大家的一点小小福利。

1 开发准备

1.1 android studio 安装

这里就不啰嗦了,到官网下载和安装:Android studio安装流程参考链接

1.2 在项目级gradle里添加华为maven仓

增量添加如下maven地址:

buildscript {
    repositories {        
        maven {url 'http://developer.huawei.com/repo/'}
    }    
}
allprojects {
    repositories {       
        maven { url 'http://developer.huawei.com/repo/'}
    }
}

1.3 在应用级的build.gradle里面加上SDK依赖

增量添加SDK依赖,SDK他们有两种版本,plus和普通版,plus效果好点儿但是包稍微大一点儿,这个地方我选了plus版本,小伙伴们可以根据自己需要自行选择,版本号填他们最新的版本就好。

dependencies{ 
  implementation 'com.huawei.hms:scanplus:1.1.1.301' 
 }

1.4 加一下混淆配置

复制粘贴华为官网上给的混淆代码就可以了

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

1.5 Manifest申请静态权限和扫码页面声明:

申请静态权限和使用特性

<!--相机权限--> 
<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" />

在application标签内添加对扫码页面的声明

<!—对扫码页面进行声明--> 
<activity android:name="com.huawei.hms.hmsscankit.ScanKitActivity" />

2 代码开发

2.1 动态申请权限

在启动扫码Activity的地方添加动态权限申请。

public void loadScanKitBtnClick(View view) {
    requestPermission(CAMERA_REQ_CODE, DECODE);
}

private void requestPermission(int requestCode, int mode) {
    ActivityCompat.requestPermissions(
            this,
            new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE},
            requestCode);
}

2.2 在权限申请回调中启动扫码界面

扫码格式通过setHmsScanTypes指定为QR码,小伙伴们如果需要支持其它码可以自己指定。

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (permissions == null || grantResults == null) {
        return;
    }
    if (grantResults.length < 2 || grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] != PackageManager.PERMISSION_GRANTED) {
        return;
    }
    if (requestCode == CAMERA_REQ_CODE) {
        ScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE, new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE).create());
    }
}

2.3 在activity回调里面获取码结果

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
   if (resultCode != RESULT_OK || data == null) {
       return;
   }
   if (requestCode == REQUEST_CODE_SCAN_ONE) {
       HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT);
       if (obj != null) {
           this.textView.setText(obj.originalValue);
       }
   }
}

结后语

整个代码开发过程就结束了,是不是超简单,给大家看下效果:

效果非常赞,支持自动缩放,两米开外瞬间就识别成功了!

作者:华为开发者论坛 链接:人类身份验证 - SegmentFault

最后:学习总结——Android框架体系架构知识脑图(纯手绘xmind文档)

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。

下方即为我手绘的Android框架体系架构知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的Android框架体系架构知识脑图原件(包括上方的面试解析xmind文档)

除此之外,前文所提及的Alibaba珍藏版 Android框架体系架构 手写文档以及一本 《大话数据结构》 书籍等等相关的学习笔记文档,也皆可分享给认可的朋友!

——感谢大家伙的认可支持,Free Download请注意:点赞+点赞+点赞!!!
714)]

除此之外,前文所提及的Alibaba珍藏版 Android框架体系架构 手写文档以及一本 《大话数据结构》 书籍等等相关的学习笔记文档,也皆可分享给认可的朋友!

——感谢大家伙的认可支持,Free Download请注意:点赞+点赞+点赞!!!
自行下载领取链接:【Git】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值