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
還有什麼不明白的自己集成試試或者看看官方的華爲掃碼服務