Android 扫描二维码(Scan Kit)

华为统一扫码服务(Scan Kit)能够提供专业的二维码与条形码扫描与解析能力,通过集成Scan Kit,帮助应用快速构建扫码功能。

统一扫码服务的功能

全面的码识别能力:Scan Kit支持全球主流的13种码制式识别。官方表示,Scan Kit几乎覆盖了日常生活中可见的各种二维码和条形码,识别成功率超过96%。

远距离检测与自动放大:Scan Kit可通过自动检测远距离码和小型码并进行自动放大,提高使用者的应用扫码成功率。

任意角度识别:Scan Kit基于自动检测及旋转纠正能力,支持用户从任意角度扫码,提升应用扫码灵活度和识别率。

复杂场景识别增强:Scan Kit基于多项计算机视觉技术(CV),能够在低光照、反光、变形、模糊、污损、彩色及特殊形态码、多码并存等各种疑难场景中进行识别增强。

场景化的码内容分析能力:Scan Kit还具备码内容分析能力。在扫描时同步提取码的结构化信息和适用场景,帮助APP快速为用户提供相应的服务,包括连接Wi-Fi、添加联系人、添加日程、查询位置等,覆盖多达12种生活化场景。

接入华为统一扫码服务

华为表示,开发者可以根据需要选择4种不同的接入模式,其中Default view mode,最少只需要5行代码,即可实现快速集成。同时,码识别和解析的过程全部在端侧完成,不保存扫描后的码信息,确保用户隐私安全。

具体内容参考华为扫码服务开发指南

示例图

使用

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

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

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

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

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

加混淆配置

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

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

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" />

代码开发

动态申请权限

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);}

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

@Overridepublic 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());    }}

在activity回调里面获取码结果

@Overrideprotected 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);       }   }}ParcelableExtra(ScanUtil.RESULT);       if (obj != null) {           this.textView.setText(obj.originalValue);       }   }}

更多相关文章

  1. iPhone 7销量超华为OPPO!iOS中国份额狂涨
  2. 详细讲解如何安装原生安卓电子市场(android market)
  3. Android(安卓)4.4系统适配AlertDialog,半透明出现白色背景怎么去
  4. Activity源码之Android(安卓)6.0权限相关完全解析
  5. [置顶] Android(安卓)进程常驻(5)----开机广播的简单守护以及总结
  6. Android(安卓)Studio运行程序出现Session ‘app’: Error Launch
  7. 关于谷歌地图的问题:requires unavailable shared library com.go
  8. Android(安卓)上实现非root的 Traceroute -- 非Root权限下移植可
  9. android中permission_group与permisson区别、作用

随机推荐

  1. Android(安卓)ApiDemos示例解析(49):Conte
  2. Android开发常用调试技术大全
  3. android环境配置-again-遇到的问题总结
  4. 第二课 - Android项目目录结构
  5. android生成二维码
  6. Android(安卓)编译参数 LOCAL_MODULE_TAG
  7. Ubuntu10.10下Android真机调试
  8. android Installation error: INSTALL_FA
  9. 【Android(安卓)P】 JobScheduler服务源码
  10. Android多级文件夹建立