android集成扫码功能
1、zxing扫码集成
2、zbar扫码集成
3、华为官方提供的扫码集成(推荐使用)
上面的三种集成中,相信集成过的都知道
第一种zxing扫码集成,遇到多种机型和扫码识别成功率都有很多缺陷;
第二种扫码可以,但是相册扫码功能有待挖掘,不支持业务需要,但是相比较于第一种来说,识别的成功率要高出很多
而这里,我们在踩过上面的坑后,都要果断的抛弃他们,因为有更牛逼的更简单的操作集成来了,这里我们只介绍第三种,前二种大家可以百度看看
华为扫码功能集成介绍
- 整个项目的build.gradle下加入代码:
buildscript {
repositories {
maven {url 'http://developer.huawei.com/repo/'}
}
}
allprojects {
repositories {
maven { url 'http://developer.huawei.com/repo/'}
}
}
- 在app的build.gradle下加入代码
dependencies{
implementation 'com.huawei.hms:scanplus:1.1.1.301'
}
- 在混淆代码proguard-rules.pro中加入代码
-keep class com.huawei.**{*;}
- 在AndroidManifest.xml中加入代码
<!--相机权限-->
<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" />
<!—对扫码页面进行声明-->
<activity android:name="com.huawei.hms.hmsscankit.ScanKitActivity" />
- 主页面调用启动扫码权限(这里省略了手机权限的调用)
关于手机权限的获取方式,这里推荐集成包(具体使用方式可百度)
implementation 'com.hjq:xxpermissions:5.5'
- 主页面调用扫码功能
//REQUEST_CODE_SCAN_GALLERY 常量,自己定义一个值,用于回调使用
ScanUtil.startScan(getActivity(), REQUEST_CODE_SCAN_GALLERY, new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE).create());
- 回调功能
在onActivityResult中加入代码获取回调二维码的链接并执行逻辑
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_SCAN_GALLERY && resultCode == 0){
handleAlbumPic(data);
}
}
private void handleAlbumPic(Intent data) {
HmsScan obj = null;
if (null!= data && null!= data.getParcelableExtra(ScanUtil.RESULT)){
obj = data.getParcelableExtra(ScanUtil.RESULT);
}
String resultStr = obj.originalValue;
//...剩下处理自己的逻辑
}
END
还有什么不明白的自己集成试试或者看看官方的华为扫码服务