欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

超简单集成HMS Scan Kit扫码SDK,轻松实现扫码购

程序员文章站 2022-05-01 19:17:37
前言随着消费升级,零售业逐渐迈入新的发展阶段,新零售”现象:消费者在货架前扫描小程序二维码,一边逛一边扫描条形码下单,等选好要买的东西,直接拿出手机,通过“扫码购”专用通道快速结账即可离开门店,根本不需要排长队买单。整个过程行云流水,如果只买一件商品,最快不到2分钟即可实现一次愉快的购物。今天就给大家介绍一下扫码购的开发流程。场景在购物类APP中,通过扫描二维码的入口,扫描商品的二维码,直接显示商品信息和购买链接,方便客户选购商品。整体方案开发前准备打开AndroidStudio项目级bui...

前言

随着消费升级,零售业逐渐迈入新的发展阶段,“新零售”现象:消费者在货架前扫描小程序二维码,一边逛一边扫描条形码下单,等选好要买的东西,直接拿出手机,通过“扫码购”专用通道快速结账即可离开门店,根本不需要排长队买单。整个过程行云流水,如果只买一件商品,最快不到2分钟即可实现一次愉快的购物。今天就给大家介绍一下扫码购的开发流程。

场景

在购物类APP中,通过扫描二维码的入口,扫描商品的二维码,直接显示商品信息和购买链接,方便客户选购商品。
超简单集成HMS Scan Kit扫码SDK,轻松实现扫码购

整体方案

超简单集成HMS Scan Kit扫码SDK,轻松实现扫码购

开发前准备

打开AndroidStudio项目级build.gradle文件

超简单集成HMS Scan Kit扫码SDK,轻松实现扫码购
在allprojects ->repositories里面配置HMS SDK的maven仓地址

allprojects { repositories { google() jcenter() maven {url 'http://developer.huawei.com/repo/'} } } 

在buildscript->repositories里面配置HMS SDK的maven仓地址

buildscript { repositories { google() jcenter() maven {url 'http://developer.huawei.com/repo/'} } } 

添加编译依赖

打开应用级的build.gradle文件
超简单集成HMS Scan Kit扫码SDK,轻松实现扫码购
集成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清单文件中对扫码页面进行声明

<activity android:name="com.huawei.hms.hmsscankit.ScanKitActivity" /> 

扫码购物代码开发关键步骤

主要有两个功能,一个是添加产品,一个是查询产品,通过扫码+拍照绑定一组产品,保存后即可通过扫描

动态权限申请

private static final int PERMISSION_REQUESTS = 1; @Override public void onCreate(Bundle savedInstanceState) { // Checking camera permission  if (!allPermissionsGranted()) { getRuntimePermissions(); } } 

启动添加产品页面

通过按钮add product 触发添加商品页面

public void addProduct(View view) { Intent intent = new Intent(MainActivity.this, AddProductActivity.class); startActivityForResult(intent, REQUEST_ADD_PRODUCT); } 

进行扫码,录入产品条形码信息

调用defaultview进行扫码

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效果

首先使用demo中的add product,录入商品的二维码信息,并拍照记录,之后使用query product ,扫面食品二维码,如果该商品已经被录入系统,就会返回对应商品信息。
超简单集成HMS Scan Kit扫码SDK,轻松实现扫码购

本文地址:https://blog.csdn.net/weixin_47546655/article/details/107783087