1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/baijuncheng-open-source-zxing-embedded

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ZXing Embedded

Библиотека для сканирования штрих-кодов в HarmonyOS, использующая ZXing для декодирования.

Проект основан на ZXing Barcode Scanner приложении, но не связан с официальным проектом ZXing.

Основные возможности:

  1. Может использоваться через Intents (необходимо мало кода).
  2. Может быть встроен в Ability для продвинутой настройки пользовательского интерфейса и логики.
  3. Сканирование может выполняться в портретной или альбомной ориентации.
  4. Камера управляет фоновым потоком, что обеспечивает быстрое время запуска.

Пример приложения доступен здесь.

Добавление зависимости Har с помощью Gradle

Добавьте следующее в ваш файл build.gradle:

Решение 1: интеграция локального источника, пользователи могут выполнять кастомизацию

  1. Скопируйте папку zxing_embedded в корневую директорию проекта;
  2. Измените файл Settings.gradle в проекте, чтобы добавить зависимость к этому модулю следующим образом:

settings.gradle

  1. Например, нам потребуется изменить файл build.gradle в модуле entry для добавления зависимостей:

dependencies

Решение 2: интеграция локальной HAR пакета

  1. Скомпилируйте этот проект и скопируйте генерируемый HAR пакет из папки build папки zxing_embedded в папку lib вашего проекта:

har

  1. Добавьте следующий код в gradle Entry
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])

Решение 3: интеграция удаленного репозитория Maven

Добавьте следующий код в gradle Entry

implementation 'com.gitee.baijuncheng-open-source:Zxing-Embedded:1.0.0'

Использование с IntentIntegrator

Запустите Intent с базовыми параметрами:

new IntentIntegrator(this).initiateScan(); // `this` - текущий Ability


// Получите результаты:
@Override
protected void onAbilityResult(int requestCode, int resultCode, Intent data) {
    IntentResult result = IntentIntegrator.parseAbilityResult(requestCode, resultCode, data);
    if (result != null) {
        String toast;
        if (result.getContents() == null) {
            toast = "Отменено от фрагмента";
        } else {
            toast = "Сканирование от фрагмента: " + result.getContents();
        }

        // В данный момент мы можем иметь или не иметь ссылку на активность
        displayToast(toast);
    }
    return;
}

Использование из Fragment:

IntentIntegrator.forSupportFragment(ScanFraction.this).initiateScan();// `this` - текущий Fragment

// Если вы используете библиотеку поддержки, используйте IntentIntegrator.forSupportFragment(ScanFraction.this)

Настройка параметров:

IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setDesiredBarcodeFormats(IntentIntegrator.ONE_D_CODE_TYPES);
integrator.setPrompt("Сканируйте штрих-код");
integrator.setCameraId(0);  // Используйте конкретную камеру устройства
integrator.setBeepEnabled(false);
integrator.setBarcodeImageEnabled(true);
integrator.initiateScan();

Дополнительные параметры см. в [IntentIntegrator][https://gitee.com/baijuncheng-open-source/zxing-embedded].

Пример генерации штрих-кода

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

if (source != null) {
    rawResult = decoder.decode(source);
}
if (rawResult != null) {
    if (resultHandler != null) {
        BarcodeResult barcodeResult = new BarcodeResult(rawResult, sourceData);
        InnerEvent innerEvent = InnerEvent.get(zxing_decode_succeeded, barcodeResult);
        PacMap pacMap = new PacMap();
        innerEvent.setPacMap(pacMap);
        handler.sendEvent(innerEvent);
    }
} else {
    if (resultHandler != null) {
        InnerEvent innerEvent = InnerEvent.get(zxing_decode_failed);
        handler.sendEvent(innerEvent);
    }
}
if (resultHandler != null) {
    List<ResultPoint> resultPoints = BarcodeResult.transformResultPoints(decoder.getPossibleResultPoints(), sourceData);
    InnerEvent innerEvent = InnerEvent.get(zxing_possible_result_points, resultPoints);
    handler.sendEvent(innerEvent);
}
requestNextPreview();

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

Изменение ориентации

Чтобы изменить ориентацию, укажите ориентацию в вашем файле config.json и позвольте ManifestMerger обновить определение Ability.

Пример:

"abilities": [
      {
        "orientation": "unspecified",
        "name": "com.harmonyos.zxingembedded.journeyapps.barcodescanner.CaptureActivity",
        "icon": "$media:icon",
        "description": "$string:ability_description",
        "label": "zxing_harmonyos_embedded",
        "type": "page",
        "launchType": "standard"
      }
    ]
IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setOrientationLocked(false);
integrator.initiateScan();

Расширенные настройки и опции

Для более расширенных опций просмотрите Пример Приложения, и исследуйте исходный код библиотеки.

Это считается продвинутым использованием, которое плохо документировано и не поддерживается.

Разрешения HarmonyOS

Необходимо наличие разрешения камеры для работы сканирования штрих-кодов. Оно автоматически включено как часть библиотеки. Запрос разрешения осуществляется во время выполнения при первом открытии сканера штрих-кодов.

Когда используется BarcodeView напрямую (вместо использования IntentIntegrator / CaptureActivity), вам придется запросить разрешение самостоятельно перед вызовом BarcodeView#resume(), иначе камера не сможет открыться.

Локальная сборка

./gradlew assemble

Чтобы развернуть артефакты в вашем локальном репозитории Maven:

./gradlew publishToMavenLocal

Вы можете использовать вашу локальную версию, указав её в вашем файле build.gradle:

repositories {
    mavenLocal()
}

Лицензия

Лицензировано по лицензии Apache License 2.0 Copyright (C) 2012-2018 Авторы ZXing, Journey Mobile

Лицензировано по лицензии Apache License, Версия 2.0 («Лицензия»); 
вы не можете использовать этот файл, кроме как в соответствии с Лицензией. 
Вы можете получить копию Лицензии по адресу 

    http://www.apache.org/licenses/LICENSE-2.0

По требованию применимого закона или согласованному письменно, программное обеспечение, 
распределенное по Лицензии, предоставляется «КАК ЕСТЬ», БЕЗ КАКОГО-ЛИБО ГАРАНТИРОВАННОГО УРОВНЯ, 
являющегося экспрессивным или подразумевающимся, включая любые гарантии или условия, 
являющиеся явными или подразумевающимися, включая, но не ограничиваясь, любые гарантии или условия, 
касающиеся торговли, специального назначения, пригодности для какой-либо цели или ненарушения прав. 
Смотрите Лицензию за конкретным языковым выражением, регулирующим права и ограничения по Лицензии.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Интегрирован основной пакет zxing. Через предварительный просмотр камеры выполняется распознавание двумерных кодов, штрих-кодов и других форматов графических кодов, после чего возвращается результат распознавания. Создан пользовательский элемент управления для распознавания, а также элемент управления предварительным просмотром камеры. Можно на... Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/baijuncheng-open-source-zxing-embedded.git
git@api.gitlife.ru:oschina-mirror/baijuncheng-open-source-zxing-embedded.git
oschina-mirror
baijuncheng-open-source-zxing-embedded
baijuncheng-open-source-zxing-embedded
master