Рубрики
Без рубрики

Как создать настольный сканер штрих-кодов на Java и Kotlin

Dynamsoft предоставляет Java Barcode SDK как для мобильной, так и для настольной разработки. Мобильная версия – d… Помечен kotlin, gradle, java, штрих-кодом.

Dynamsoft предоставляет Java Barcode SDK как для мобильной, так и для настольной разработки. Мобильная версия распространяется в виде пакета Android AAR, а настольная версия распространяется в виде пакета JAR. Цель этой статьи – помочь разработчикам, которые хотят создавать настольные или серверные приложения для сканирования штрих-кодов на Java или Kotlin.

Установка считывателя штрих-кодов Dynamsoft с помощью Gradle

Чтобы получить Dynamsoft Barcode Reader , вы можете либо загрузить SDK напрямую, либо настроить URL-адрес Maven для инструментов автоматической сборки. Я рекомендую использовать Gradle для создания проекта сканера штрих-кодов Java или Kotlin.

Вот шаги:

  1. Создайте новый проект Gradle:

  2. Перейдите в app> build.gradle , чтобы добавить репозиторий Maven, размещенный Dynamsoft, и зависимость:

    Примечание: для создания проектов Android barcode scanner URL-адрес и имя пакета отличаются:

Java-приложение для сканирования штрих-кодов для Windows, Linux и macOS

Dynamsoft Java Barcode SDK реализован в Java Native Interface (JNI). Таким образом, он обеспечивает лучшую производительность, чем чистые Java SDK, такие как ZXing. Хотя базовой технологией является C++, SDK содержит встроенные собственные библиотеки для нескольких операционных систем.

Мы можем открыть App.java или App.kt файлы для создания экземпляра объекта считывателя штрих-кодов следующим образом:

// Java
import com.dynamsoft.dbr.*;

BarcodeReader br = new BarcodeReader(license);
// Kotlin
import com.dynamsoft.dbr.*

val br = BarcodeReader(license)

Нажмите здесь , чтобы получить 30-дневную БЕСПЛАТНУЮ пробную лицензию , если вы хотите разблокировать все функции API.

Dynamsoft позволяет разработчикам настраивать алгоритмы для конкретных сценариев. Таким образом, мы можем посетить бесплатную онлайн-демонстрацию штрих-кода , чтобы сгенерировать соответствующий шаблон для инициализации параметров:

// Java
br.initRuntimeSettingsWithString("{\"ImageParameter\":{\"Name\":\"Balance\",\"DeblurLevel\":5,\"ExpectedBarcodesCount\":512,\"LocalizationModes\":[{\"Mode\":\"LM_CONNECTED_BLOCKS\"},{\"Mode\":\"LM_STATISTICS\"}]}}", EnumConflictMode.CM_OVERWRITE);
// Kotlin
br.initRuntimeSettingsWithString("{\"ImageParameter\":{\"Name\":\"Balance\",\"DeblurLevel\":5,\"ExpectedBarcodesCount\":512,\"LocalizationModes\":[{\"Mode\":\"LM_CONNECTED_BLOCKS\"},{\"Mode\":\"LM_STATISTICS\"}]}}", EnumConflictMode.CM_OVERWRITE)

Следующий пример кода используется для считывания штрих-кодов из файла изображения и распечатки всех результатов:

// Java
results = mBarcodeReader.decodeFile(file, "");
for (TextResult result : results) {
    System.out.println(String.format("  Barcode %d:", index++));
    if(result.barcodeFormat != 0){
        System.out.println("    Type: " + result.barcodeFormatString);
    } else {
        System.out.println("    Type: " + result.barcodeFormatString_2);
    }


    System.out.println("    Value: " + result.barcodeText);

    System.out.println(String.format("    Region points: {(%d,%d),(%d,%d),(%d,%d),(%d,%d)}",
    result.localizationResult.resultPoints[0].x, result.localizationResult.resultPoints[0].y,
    result.localizationResult.resultPoints[1].x,result.localizationResult.resultPoints[1].y,
    result.localizationResult.resultPoints[2].x,result.localizationResult.resultPoints[2].y,
    result.localizationResult.resultPoints[3].x,result.localizationResult.resultPoints[3].y));
}
// Kotlin
val results: Array = br.decodeFile(file, "")
for (result in results) {
    println(String.format("  Barcode %d:", index++))
    if (result.barcodeFormat != 0) {
        System.out.println("    Type: " + result.barcodeFormatString)
    } else {
        System.out.println("    Type: " + result.barcodeFormatString_2)
    }
    System.out.println("    Value: " + result.barcodeText)
    println(
        java.lang.String.format(
            "    Region points: {(%d,%d),(%d,%d),(%d,%d),(%d,%d)}",
            result.localizationResult.resultPoints.get(0).x,
            result.localizationResult.resultPoints.get(0).y,
            result.localizationResult.resultPoints.get(1).x,
            result.localizationResult.resultPoints.get(1).y,
            result.localizationResult.resultPoints.get(2).x,
            result.localizationResult.resultPoints.get(2).y,
            result.localizationResult.resultPoints.get(3).x,
            result.localizationResult.resultPoints.get(3).y
        )
    )
}

С помощью нескольких строк кода выполняется простой сканер штрих-кодов из командной строки.

Вот размытое изображение QR-кода:

Теперь мы можем запустить команду Gradle с указанными аргументами.

./gradlew run --args="../../images/QR-Blurred.jpg ../../license.txt"

Тестирование Java-Приложений с использованием Travis CI

Чтобы проверить, является ли приложение сканера штрих-кодов кроссплатформенным, мы создаем файл .travis.yml для репозитория GitHub:

language: java

jobs:
  include:
    - name: "Linux"
      os: linux
    - name: "macOS"
      os: osx
    - name: "Windows"
      os: windows           
      language: shell       
      before_install:
        - choco install jdk8 -params 'installdir=c:\\jdk' -y;
        - export JAVA_HOME=${JAVA_HOME:-/c/jdk};
      env: PATH=/c/jdk/bin:$PATH

branches:
  only:
    - main

script:
  - if [[ ${TRAVIS_OS_NAME} != "windows" ]]; then
        chmod +x java/gradlew;
        chmod +x kotlin/gradlew;
    fi
  - cd java
  - ./gradlew test
  - ./gradlew run --args="../../images/AllSupportedBarcodeTypes.png"
  - cd .. 
  - cd kotlin
  - ./gradlew test
  - ./gradlew run --args="../../images/AllSupportedBarcodeTypes.png"

Мы должны добавить ‘ chmod +x ‘, чтобы файл скрипта gradlew работал в Linux и macOS.

исходный код

исходный код

Оригинал: “https://dev.to/yushulx/how-to-build-desktop-barcode-scanner-in-java-and-kotlin-fhc”