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

前言

  在前面的文章中,咱们向你们介绍了HMS Scan Kit 的快速集成方法以及HMS Scan Kit和其余开源扫码工具的竞争力对比分析,若是没有看到也不要紧,文章下方的往期连接中有文章入口。咱们如今已经习惯了扫码,扫码支付,扫码关注社交帐号,扫码了解商品信息,扫码购物等等。今天就给你们介绍一下扫码购的开发流程。java


场景

  在购物类APP中,经过扫描二维码的入口,扫描商品的二维码,直接显示商品信息和购买连接,方便客户选购商品。android

在这里插入图片描述


总体方案

在这里插入图片描述


开发前准备

打开AndroidStudio项目级build.gradle文件

在这里插入图片描述
  在allprojects ->repositories里面配置HMS SDK的maven仓地址

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

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

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

添加编译依赖

  打开应用级的build.gradle文件 ide

在这里插入图片描述
  集成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" />
复制代码

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

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

动态权限申请

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

启动添加产品页面

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

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

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

  调用defaultview进行扫码ui

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)) {
            ……
        }
    }
复制代码

扫码查询商品

  扫码查询的方法也相似,直接在主页面进行便可,在回调函数中对结果进行展现this

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 ,扫面食品二维码,若是该商品已经被录入系统,就会返回对应商品信息。

在这里插入图片描述


往期连接:手把手教你如何快速构建应用内消息推送与运营能力

原文连接:developer.huawei.com/consumer/cn…

原做者:littlewhite

相关文章
相关标签/搜索