腾讯云智能扫码快速集成(Android)_AI解决方案_同尘科技
开发准备
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折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
暂无评论,你要说点什么吗?