Библиотека для сканирования штрих-кодов в HarmonyOS, использующая ZXing для декодирования.
Проект основан на ZXing Barcode Scanner приложении, но не связан с официальным проектом ZXing.
Основные возможности:
Пример приложения доступен здесь.
Добавьте следующее в ваш файл build.gradle
:
Решение 1: интеграция локального источника, пользователи могут выполнять кастомизацию
Settings.gradle
в проекте, чтобы добавить зависимость к этому модулю следующим образом:build.gradle
в модуле entry для добавления зависимостей:Решение 2: интеграция локальной HAR пакета
build
папки zxing_embedded в папку lib
вашего проекта:gradle Entry
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
Решение 3: интеграция удаленного репозитория Maven
Добавьте следующий код в gradle Entry
implementation 'com.gitee.baijuncheng-open-source:Zxing-Embedded:1.0.0'
Запустите 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();
Для более расширенных опций просмотрите Пример Приложения, и исследуйте исходный код библиотеки.
Это считается продвинутым использованием, которое плохо документировано и не поддерживается.
Необходимо наличие разрешения камеры для работы сканирования штрих-кодов. Оно автоматически включено как часть библиотеки. Запрос разрешения осуществляется во время выполнения при первом открытии сканера штрих-кодов.
Когда используется 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 )