腾讯云智能扫码快速集成(Android)_AI解决方案_同尘科技

智能扫码 3年前 (2022-04-22) 浏览 153

开发准备

1. 注册腾讯云账号,提交智能扫码服务的申请,等待审核通过后,获得专属密钥。(申请地址:智能扫码申请)2. 从 SDK 下载链接中下载智能扫码 SDK 到本地准备集成。

Android 端智能扫码 SDK 接入流程

Android 端智能扫码 SDK 介绍

SDK 文件为 QBarCode-v0.1.2.aar,该文件里面封装了智能扫码接口、so 文件、检测与超分模型的资源文件。功能:提供实时识别一维码、二维码和图片内一、二维码检测识别的服务。

环境依赖

当前 Android 端智能扫码 SDK 适用于 API 19 (Android 4.4) 及以上版本。

接入步骤

1. 将 QBarCode-v0.1.2.aar 包添加到您的工程文件中的libs目录下。2. 配置 build
在您的工程文件中的 build.gradle 中进行如下配置:

//使用 aar 时必须要设置android {    //**    defaultConfig {       /***/        ndk {            abiFilters "armeabi-v7a","arm64-v8a"        }    }  sourceSets {        main {          jniLibs.srcDirs = ['libs/jniLibs']        }    }}dependencies {    implementation files('libs/QBarCode-v0.1.2.aar')    // 智能扫码依赖第三方库    implementation 'commons-io:commons-io:2.6'}

3. 权限申请
需要在 AndroidManifest.xml 文件中声明权限

对于需要兼容 Android 6.0 以上的用户,以上权限除了需要在 AndroidManifest.xml 文件中声明权以外,还需使用代码动态申请权限。

SDK 接口说明

sdk 初始化:

用户初始化智能扫码 SDK,SECRET_ID 与 SECRET_KEY 传入云服务后台申请的密钥信息(申请地址:智能扫码申请)

   private QBarCodeKit qBarCodeKit;
//Android 6及以上动态申请权限,权限通过后再初始化 qBarCodeKit = QBarCodeKit.getInstance(); qBarCodeKit.initQBarCodeKit(SECRET_ID, SECRET_KEY, MainActivity2.this, new QBarCodeKit.OnSdkKitInitCallback (){ @Override public void onInitResult(String errCode, String errMsg) { //initAuth 执行时间可能有1-2s,当返回SUCCESS(0) 说明授权成功,再进行后面的操作 Log.d("onInitResult:", "errCode:" + errCode + " errMsg:" + errMsg); }});

摄像头数据实时识别:

扫描 SDK 提供了 ScanCodeDetectView,用来方便您在自定义的 UI 界面里使用智能扫描功能。首先您需要在 UI 界面的布局文件中添加ScanCodeDetectView:

然后只需要在对应的界面代码中为 ScanCodeDetectView 设置结果回调即可。

scanView.setScanCallBack(new QBarSdkCallback() {  @Override  public void onIdentityResult(ScanResult result) {    String data = result.getData(); // 识别内容    String charset = result.getTypeName(); // 内容信息字符集    String typeName = result.getCharset(); // 扫码类型  }});scanView.onCreate(); // 构建ScanCodeDetectView

ScanCodeDetectView 的生命周期如下,请在对应的生命周期阶段进行调用。

//scanView Life cyclescanView.onCreate();scanView.onResume();scanView.onPause();scanView.onStop();scanView.onDestroy();

默认扫描界面识别:

如果您只关注扫码功能不需要支持自定义 UI 界面,可以使用智能扫码 SDK 内自带的默认界面完成扫描操作。

qBarCodeKit.startDefaultQBarScan(MainActivity.this, new QBarSdkCallback() {  @Override  public void onIdentityResult(ScanResult result) {    String data = result.getData(); // 识别内容    String charset = result.getTypeName(); // 内容信息字符集    String typeName = result.getCharset(); // 扫码类型  }
@Override public void onFail(final int errorCode, final String errorMsg) { // 智能扫码的错误 runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this, "code: " + errorCode + " msg: " + errorMsg, Toast.LENGTH_SHORT).show(); } });});

传入图片识别:

除了主动扫描以外,智能扫码 SDK 还支持图片识别功能,只需传入需要识别的图像即可:

/* * bitmap 图片大小建议小于1M,避免OOM */List results = qBarCodeKit.decodeImageWithQBar(bitmap, MainActivity.this);

图片识别功能具体使用范例如下:

   /*   * bitmap 获取   * filePath 源图片路径   */    BitmapFactory.Options sizeOptions = new BitmapFactory.Options();    sizeOptions.inJustDecodeBounds = true;    BitmapFactory.decodeFile(filePath, sizeOptions);    BitmapFactory.Options decodeOptions = new BitmapFactory.Options();    if (sizeOptions.outWidth * sizeOptions.outHeight * 3 > 10 * 1024 * 1024) {        Log.i("MainActivity2", String.format("bitmap too large %d x %d, sample",sizeOptions.outWidth, sizeOptions.outHeight));        decodeOptions.inSampleSize = 2;    }    Bitmap bitmap = BitmapFactory.decodeFile(filePath, decodeOptions);    /*    * bitmap 图片大小建议小于1M,避免OOM    */   List results = qBarCodeKit.decodeImageWithQBar(bitmap, MainActivity.this);   for (ScanResult result : results) {     String data = result.getData(); // 识别内容     String charset = result.getTypeName(); // 内容信息字符集     String typeName = result.getCharset(); // 扫码类型   }

混淆规则配置

如果您的应用开启了混淆功能,为确保扫描 SDK 的正常使用,请把以下部分添加到您的混淆文件中。

-keep public interface com.tencent.scanlib.camera.Auth$OnInitCallback { *; }-keep public interface com.tencent.scanlib.decoder.FileDecodeQueue$FileDecodeCallBack { *; }-keep public interface com.tencent.scanlib.ui.ScanCodeView$ScanCallBack { *; }-keep class com.tencent.scanlib.decoder.FileDecodeQueue { *; }-keep class com.tencent.scanlib.decoder.FileDecodeQueue$* { *; }-keep class com.tencent.scanlib.decoder.QBar$QBarResult { *; }-keep class com.tencent.scanlib.decoder.QBarConstants { *; }-keep class com.tencent.scanlib.ui.ScanCodeView { *; }-keep class com.tencent.cloud.auth.lib.Error {*;}-keep class com.tencent.qbar.** {*;}-keep class com.tencent.scanlib.kit.** {*;}-keep class com.tencent.cloud.auth.lib.Jni$AuthResult {*;}-keep class com.tencent.scanlib.model.ScanResult {*;}-keep class com.tencent.scanlib.model.ScanResultWithDetect {*;}

对解决方案有疑惑?想了解解决方案收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案

- 0人点赞 -

发表点评 (0条)

not found

暂无评论,你要说点什么吗?