3 августа

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

Разработка под Android

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


В нашей последней статье мы рассказали о том, как быстро интегрировать 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. Следите за новостями!
Теги:HMS ML Kit;Android Development
Хабы: Разработка под Android
+6
975 11
Комментарии 1
Похожие публикации
Android
от 150 000 ₽NatsONМоскваМожно удаленно
Android-разработчик
от 80 000 ₽FlowwowМожно удаленно
Android-разработчик
до 80 000 ₽AmigowebМагнитогорскМожно удаленно
Senior Android Developer
от 3 000 €Pure AppМожно удаленно
Android-разработчик
от 170 000 до 230 000 ₽ENJOY PROСанкт-ПетербургМожно удаленно
Лучшие публикации за сутки