华为HMS Scankit 扫码SDK集成-实现扫一扫功能
一、集成HMS Core SDK
1.添加当前应用的AppGallery Connect配置文件
在华为开发者联盟注册成为开发者-创建应用-下载agconnect-services.json文件
2.将“agconnect-services.json”文件拷贝到应用级根目录下
3.配置HMS Core SDK的Maven仓地址
- 打开Android Studio项目级“build.gradle”文件。
- 添加HUAWEI agcp插件以及Maven代码库。
在“buildscript > repositories”中配置HMS Core SDK的Maven仓地址。
在“allprojects > repositories”中配置HMS Core SDK的Maven仓地址。
如果App中添加了“agconnect-services.json”文件则需要在“buildscript >
dependencies”中增加agcp配置。
4.添加编译依赖
- 打开应用级的“build.gradle”文件。
- 引用SDK,Scan Kit提供两种SDK,您可以根据需求选择合适的SDK。
dependencies{
implementation 'com.huawei.hms:scan:1.3.2.300'
implementation 'com.huawei.hms:scanplus:1.3.2.300'
}
说明
如果在非华为手机使用多码能力接口,请使用Scan SDK-Plus,否则会影响识别。
com.huawei.hms:scanplus:{version}
- 添加AGC插件配置。请根据实际情况选择:
- 方式一:在文件头部声明下一行添加如下配置
apply plugin: 'com.huawei.agconnect'
- 方式二:在plugins中添加如下配置。
plugins {
id 'com.android.application'
//添加如下配置
id 'com.huawei.agconnect'
}
二、配置混淆脚本
- 在应用级根目录下打开混淆配置文件“proguard-rules.pro”,加入排除HMS Core SDK的混淆配置脚本。
-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.**{*;}
- 如果您使用了AndResGuard,需要在应用级的“build.gradle”文件中加入AndResGuard允许清单。
"R.string.hms*",
"R.string.connect_server_fail_prompt_toast",
"R.string.getting_message_fail_prompt_toast",
"R.string.no_available_network_prompt_toast",
"R.string.third_app_*",
"R.string.upsdk_*",
"R.layout.hms*",
"R.layout.upsdk_*",
"R.drawable.upsdk*",
"R.color.upsdk*",
"R.dimen.upsdk*",
"R.style.upsdk*",
"R.string.agc*"
三、指定权限
- AndroidManifest.xml中指定相应的权限
- 代码中动态申请一下权限
- 校验是否开启相应的权限,决定是否继续扫码
<!--相机权限-->
<uses-permission android:name="android.permission.CAMERA" />
<!--读文件权限-->
<uses-permission android:name="android.permission.READ_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) {
//调用扫码接口,构建扫码能力,需您实现
...
}
}
四、调用扫码功能
调用HMS Core SDK的“startScan”扫码接口,启动扫码界面