超简单集成HMS Scan Kit扫码SDK,轻松实现扫码购
前言
??在前面的文章中,我們向大家介紹了HMS Scan Kit 的快速集成方法以及HMS Scan Kit和其他開源掃碼工具的競(jìng)爭(zhēng)力對(duì)比分析,如果沒有看到也沒關(guān)系,文章下方的往期鏈接中有文章入口。我們現(xiàn)在已經(jīng)習(xí)慣了掃碼,掃碼支付,掃碼關(guān)注社交賬號(hào),掃碼了解商品信息,掃碼購(gòu)物等等。今天就給大家介紹一下掃碼購(gòu)的開發(fā)流程。
場(chǎng)景
??在購(gòu)物類APP中,通過(guò)掃描二維碼的入口,掃描商品的二維碼,直接顯示商品信息和購(gòu)買鏈接,方便客戶選購(gòu)商品。
整體方案
開發(fā)前準(zhǔn)備
打開AndroidStudio項(xiàng)目級(jí)build.gradle文件
??在allprojects ->repositories里面配置HMS SDK的maven倉(cāng)地址
??在buildscript->repositories里面配置HMS SDK的maven倉(cāng)地址
buildscript { repositories { google() jcenter() maven {url 'http://developer.huawei.com/repo/'} } }添加編譯依賴
??打開應(yīng)用級(jí)的build.gradle文件
??集成SDK
??指定權(quán)限和特性
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" />??由于使用集成簡(jiǎn)單的defaultview,所以在AndroidManifest.xml清單文件中對(duì)掃碼頁(yè)面進(jìn)行聲明
<activity android:name="com.huawei.hms.hmsscankit.ScanKitActivity" />掃碼購(gòu)物代碼開發(fā)關(guān)鍵步驟
??主要有兩個(gè)功能,一個(gè)是添加產(chǎn)品,一個(gè)是查詢產(chǎn)品,通過(guò)掃碼+拍照綁定一組產(chǎn)品,保存后即可通過(guò)掃描
動(dòng)態(tài)權(quán)限申請(qǐng)
private static final int PERMISSION_REQUESTS = 1; @Override public void onCreate(Bundle savedInstanceState) { // Checking camera permission if (!allPermissionsGranted()) {getRuntimePermissions();} }啟動(dòng)添加產(chǎn)品頁(yè)面
??通過(guò)按鈕add product 觸發(fā)添加商品頁(yè)面
public void addProduct(View view) {Intent intent = new Intent(MainActivity.this, AddProductActivity.class);startActivityForResult(intent, REQUEST_ADD_PRODUCT);}進(jìn)行掃碼,錄入產(chǎn)品條形碼信息
??調(diào)用defaultview進(jìn)行掃碼
private void scanBarcode(int requestCode) {HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.ALL_SCAN_TYPE).create();ScanUtil.startScan(this, requestCode, options);}回調(diào)函數(shù)中保存掃碼的結(jié)果
@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (data == null) {return;}if ((requestCode == this.REQUEST_CODE_SCAN_ALL)&& (resultCode == Activity.RESULT_OK)) {HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT);if (obj != null && obj.getOriginalValue() != null) {this.barcode = obj.getOriginalValue();}} else if ((requestCode == this.REQUEST_TAKE_PHOTO)&& (resultCode == Activity.RESULT_OK)) {……}}掃碼查詢商品
??掃碼查詢的方法也類似,直接在主頁(yè)面進(jìn)行即可,在回調(diào)函數(shù)中對(duì)結(jié)果進(jìn)行展示
public void queryProduct(View view) {HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.ALL_SCAN_TYPE).create();ScanUtil.startScan(this, REQUEST_QUERY_PRODUCT, options); }@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (data == null) {return;}if ((requestCode == this.REQUEST_ADD_PRODUCT) && (resultCode == Activity.RESULT_OK)) {barcodeToProduct.put(data.getStringExtra(Constant.BARCODE_VALUE), data.getStringExtra(Constant.IMAGE_PATH_VALUE));} else if ((requestCode == this.REQUEST_QUERY_PRODUCT) && (resultCode == Activity.RESULT_OK)) {HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT);String path = "";if (obj != null && obj.getOriginalValue() != null) {path = barcodeToProduct.get(obj.getOriginalValue());}if (path != null && !path.equals("")) {loadCameraImage(path);showPictures();}}}Demo效果
??首先使用demo中的add product,錄入商品的二維碼信息,并拍照記錄,之后使用query product ,掃面食品二維碼,如果該商品已經(jīng)被錄入系統(tǒng),就會(huì)返回對(duì)應(yīng)商品信息。
往期鏈接:手把手教你如何快速構(gòu)建應(yīng)用內(nèi)消息推送與運(yùn)營(yíng)能力
原文鏈接:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201282395801440275&fid=18
原作者:littlewhite
總結(jié)
以上是生活随笔為你收集整理的超简单集成HMS Scan Kit扫码SDK,轻松实现扫码购的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【转载】2005中文博客排名报告
- 下一篇: C语言--树结构