在前面的文章中,咱們向你們介紹了HMS Scan Kit 的快速集成方法以及HMS Scan Kit和其餘開源掃碼工具的競爭力對比分析,若是沒有看到也不要緊,文章下方的往期連接中有文章入口。咱們如今已經習慣了掃碼,掃碼支付,掃碼關注社交帳號,掃碼瞭解商品信息,掃碼購物等等。今天就給你們介紹一下掃碼購的開發流程。java
在購物類APP中,經過掃描二維碼的入口,掃描商品的二維碼,直接顯示商品信息和購買連接,方便客戶選購商品。android
在allprojects ->repositories裏面配置HMS SDK的maven倉地址maven
allprojects { repositories { google() jcenter() maven {url 'http://developer.huawei.com/repo/'} } }
在buildscript->repositories裏面配置HMS SDK的maven倉地址ide
buildscript { repositories { google() jcenter() maven {url 'http://developer.huawei.com/repo/'} } }
打開應用級的build.gradle文件
集成SDK函數
dependencies{ implementation 'com.huawei.hms:scan:1.1.3.301' }
指定權限和特性工具
<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" />
因爲使用集成簡單的defaultview,因此在AndroidManifest.xml清單文件中對掃碼頁面進行聲明gradle
<activity android:name="com.huawei.hms.hmsscankit.ScanKitActivity" />
主要有兩個功能,一個是添加產品,一個是查詢產品,經過掃碼+拍照綁定一組產品,保存後便可經過掃描ui
private static final int PERMISSION_REQUESTS = 1; @Override public void onCreate(Bundle savedInstanceState) { // Checking camera permission if (!allPermissionsGranted()) { getRuntimePermissions(); } }
經過按鈕add product 觸發添加商品頁面this
public void addProduct(View view) { Intent intent = new Intent(MainActivity.this, AddProductActivity.class); startActivityForResult(intent, REQUEST_ADD_PRODUCT); }
調用defaultview進行掃碼google
private void scanBarcode(int requestCode) { HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.ALL_SCAN_TYPE).create(); ScanUtil.startScan(this, requestCode, options); }
@Override public 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)) { …… } }
掃碼查詢的方法也相似,直接在主頁面進行便可,在回調函數中對結果進行展現
public void queryProduct(View view) { HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.ALL_SCAN_TYPE).create(); ScanUtil.startScan(this, REQUEST_QUERY_PRODUCT, options); } @Override public 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中的add product,錄入商品的二維碼信息,並拍照記錄,以後使用query product ,掃麪食品二維碼,若是該商品已經被錄入系統,就會返回對應商品信息。
往期連接:手把手教你如何快速構建應用內消息推送與運營能力
原文連接:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201282395801440275&fid=18原做者:littlewhite