使用HMS Core Scan SDK实施条形码扫描功能

一般信息



在上一篇文章中,我们介绍了如何快速集成HMS Core Scan SDK,并将此SDK与其他开源条形码扫描工具进行了比较。如果您尚未阅读本文,可以在此处找到



我们每天扫描条形码以支付购买,订阅社交媒体帐户并接收产品信息。今天,我想向您展示如何在购物应用程序中实现条形码扫描功能。



情境



使用此功能,用户可以扫描条形码以获取产品信息以及进行购买的链接。







动作图







训练



在gradle文件夹中打开build.gradle文件







转到allprojects>存储库,并为HMS Core SDK配置Maven存储库地址。



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


转到buildscript>存储库,并为HMS Core SDK配置Maven存储库地址。



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


添加依赖项



app文件夹中 打开build.gradle文件 集成HMS Core SDK。











dependencies{  
    implementation 'com.huawei.hms:scan:1.1.3.301'
}
Assign permissions and specify features.
<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" />


由于SDK集成使用默认的查看模式,因此请在应用程序文件夹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();
   }
}


打开添加产品屏幕



单击添加产品以打开一个屏幕,您可以在其中添加产品。



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


扫描条形码以记录产品信息



使用HUAWEI扫描套件的默认视图扫描条形码。



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();
            }
        }
    }


自己尝试!



单击添加产品在出现的屏幕上,扫描产品条形码并拍摄产品照片。单击查询产品并扫描产品条形码。由于产品已在系统中注册,因此将返回有关该产品的信息。





github.com/HMS-Core/hms-scan-demo/tree/master/Scan-Shopping



新例子



我们将与您分享HUAWEI Scan Kit中其他令人惊奇的功能的示例。关注新闻!



All Articles