一般信息
在上一篇文章中,我们介绍了如何快速集成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中其他令人惊奇的功能的示例。关注新闻!