Реализация функции сканирования штрихкодов с помощью HMS Core Scan SDK

от автора

Общая информация

В нашей последней статье мы рассказали о том, как быстро интегрировать HMS Core Scan SDK, и сравнили этот SDK с другими инструментами сканирования штрихкодов с открытым исходным кодом. Если вы еще не читали эту статью, вы можете найти ее здесь.

Мы сканируем штрихкоды каждый день, чтобы оплачивать покупки, подписываться на аккаунты в социальных сетях и получать информацию о продуктах. Сегодня я хочу показать вам, как реализовать функцию сканирования штрихкодов в приложении для покупок.

Сценарий

С помощью этой функции пользователи могут отсканировать штрихкод, чтобы получить информацию о продукте и ссылку для совершения покупки.

Схема действий

Подготовка

Откройте файл build.gradle в папке gradle

Перейдите в раздел allprojects > repositories и настройте адрес репозитория Maven для HMS Core SDK.

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

Перейдите в раздел buildscript > repositories и настройте адрес репозитория Maven для HMS Core SDK.

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

Добавьте зависимости

Откройте файл build.gradle в папке app.

Интегрируйте 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();    } }

Откройте экран добавления продукта

Нажмите Add Product, чтобы открыть экран, на котором вы сможете добавить продукт.

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

Отсканируйте штрихкод для записи информации о продукте

Отсканируйте штрихкод с помощью режима Просмотр по умолчанию HUAWEI Scan Kit.

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)) {             ……         } }

Отсканируйте штрихкод для поиска продукта

Нажмите Query Product и откройте экран, где вы сможете найти продукт. Отобразите результат с помощью функции обратного вызова.

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

Попробуйте сами!

Нажмите Add Product. На появившемся экране отсканируйте штрихкод продукта и сфотографируйте продукт. Нажмите Query Product и отсканируйте штрихкод продукта.
Так как продукт был зарегистрирован в системе, информация о нем будет возвращена.


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

Новые примеры

Мы будем делиться с вами примерами других удивительных функций, доступных в HUAWEI Scan Kit. Следите за новостями!

ссылка на оригинал статьи https://habr.com/ru/post/513590/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *