ZXingLite for Android — это упрощённая и оптимизированная версия ZXing, которая основана на библиотеке ZXing. Она специализируется на функциях сканирования и генерации QR-кодов и штрих-кодов. ZXingLite позволяет быстро реализовать функции распознавания сканирования.
Gif-демонстрация
GIF.gif
Вы также можете скачать демонстрационное приложение (https://raw.githubusercontent.com/jenly1314/ZXingLite/master/app/release/app-release.apk) для тестирования его работы.
Введение
Добавьте удалённый репозиторий в Project/build.gradle или setting.gradle:
repositories {
//...
mavenCentral()
}
Включите зависимость в Module/build.gradle:
implementation 'com.github.jenly1314:zxing-lite:3.2.0'
Требования к версии SDK для разных версий ZXingLite:
— Для версий 3.1.x и выше требуется compileSdkVersion >= 34.
— Для версий 3.0.x и выше требуется compileSdkVersion >= 33.
— Если compileSdkVersion < 33, рекомендуется использовать версию 2.x (https://github.com/jenly1314/ZXingLite/tree/2.x).
Основные изменения по сравнению с версией 2.x включают:
— Удаление классов, связанных с CameraScan, в версии 2.x. Начиная с версии 3.0.0, используется библиотека CameraScan (https://github.com/jenly1314/CameraScan), которая поддерживается отдельно.
— Удаление ViewfinderView в версии 2.x. С версии 3.0.0 используется ViewfinderView (https://github.com/jenly1314/ViewfinderView), который также поддерживается отдельно.
— Удаление базовых классов CaptureActivity и CaptureFragment в версии 2.x. В версии 3.0.0 используются BarcodeCameraActivity и BarcodeCameraFragment.
Помимо этих изменений, использование версии 3.x в целом аналогично версии 2.x, но с дополнительной оптимизацией.
Если вы переходите с версии 2.x на 3.x, обратите внимание на эти основные различия, особенно на то, что библиотеки, которые были отделены от ZXingLite, теперь имеют другие имена пакетов. Рекомендуется тщательно подходить к обновлению.
Для пользователей версии 2.x рекомендуется обратиться к ветке v2.x (https://github.com/jenly1314/ZXingLite/tree/2.x).
В версии 3.x используется CameraScan как основная библиотека для реализации функций анализа и обнаружения. Поэтому рекомендуется сначала ознакомиться с использованием CameraScan, а затем интегрировать и использовать ZXingLite.
Анализаторы:
Рекомендуется использовать MultiFormatAnalyzer, если вам нужно распознавать различные типы штрих-кодов, или QRCodeAnalyzer, если требуется только распознавание QR-кодов.
DecodeConfig используется для настройки параметров при распознавании штрих-кода. Он позволяет контролировать процесс распознавания и упрощает его.
DecodeFormatManager классифицирует и разделяет различные типы штрих-кодов для удобства настройки.
Класс CodeUtils предоставляет инструменты для создания и анализа штрих-кодов. Пример использования:
// Создание QR-кода
CodeUtils.createQRCode(content,600,logo);
// Создание штрих-кода
CodeUtils.createBarCode(content, BarcodeFormat.CODE_128,800,200);
// Анализ штрих-кода/QR-кода
CodeUtils.parseCode(bitmap);
// Анализ QR-кода
CodeUtils.parseQRCode(bitmap);
``` **О BarcodeCameraScanActivity**
Пример полного наследования BarcodeCameraScanActivity для реализации сканирования двумерного кода:
```java
public class QRCodeScanActivity extends BarcodeCameraScanActivity {
@Override
public void initCameraScan(@NonNull CameraScan<Result> cameraScan) {
super.initCameraScan(cameraScan);
// 根据 необходимости устанавливаем конфигурацию CameraScan
cameraScan.setPlayBeep(true);
}
@Nullable
@Override
public Analyzer<Result> createAnalyzer() {
// Инициализируем конфигурацию декодирования
DecodeConfig decodeConfig = new DecodeConfig();
decodeConfig.setHints(DecodeFormatManager.QR_CODE_HINTS) // Если есть только потребность в распознавании двумерных кодов, такая настройка будет более эффективной, по умолчанию используется DecodeFormatManager.DEFAULT_HINTS
.setFullAreaScan(false) // Устанавливаем, следует ли выполнять полное сканирование области, по умолчанию false
.setAreaRectRatio(0.8f) // Устанавливаем коэффициент распознавания области, по умолчанию 0.8, окончательное распознавание будет выполнено на основе этого коэффициента в прямоугольной области предварительного просмотра
.setAreaRectVerticalOffset(0) // Устанавливаем вертикальное смещение области распознавания, по умолчанию 0, что означает центрирование, может быть отрицательным числом
.setAreaRectHorizontalOffset(0); // Устанавливаем горизонтальное смещение области распознавания, по умолчанию 0, что означает центрирование, может быть отрицательным числом
// В BarcodeCameraScanActivity по умолчанию используется MultiFormatAnalyzer, если требуется только распознавать двумерные коды, здесь можно использовать QRCodeAnalyzer
return new MultiFormatAnalyzer(decodeConfig);
}
/**
* Идентификатор макета; можно настроить макет, переопределив этот метод
*
* @return Идентификатор макета
*/
@Override
public int getLayoutId() {
return R.layout.activity_qrcode_scan;
}
@Override
public void onScanResultCallback(@NonNull AnalyzeResult<Result> result) {
// Останавливаем анализ
getCameraScan().setAnalyzeImage(false);
// Возвращаем результат
Intent intent = new Intent();
intent.putExtra(CameraScan.SCAN_RESULT, result.getResult().getText());
setResult(Activity.RESULT_OK, intent);
finish();
}
}
Использование BarcodeCameraScanFragment аналогично.
Для получения дополнительной информации о использовании, пожалуйста, обратитесь к исходному коду приложения или непосредственно к документации API (https://jenly1314.github.io/ZXingLite/api/).
Другие
Если вы используете ZXingLite версии v2.3.x или выше (то есть обновляете zxing до v3.5.1), и если вам нужно поддерживать Android 7.0 (N) или ниже (то есть minSdk < 24), вы можете использовать Java 8 и более поздние версии API через де-сахарификацию.
compileOptions {
// Флаг для включения поддержки новых языковых API
coreLibraryDesugaringEnabled true
// Устанавливает совместимость с Java на Java 11
targetCompatibility JavaVersion.VERSION_11
sourceCompatibility JavaVersion.VERSION_11
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.3'
}
Рекомендуемые ресурсы
Журнал версий
Версия | Дата | Изменения |
---|---|---|
v3.2.0 | 2024-07-16 | Обновлён CameraScan до v1.2.0, обновлён ViewfinderView до v1.2.0, оптимизированы детали |
v3.1.1 | 2024-04-29 | Обновлён CameraScan до v1.1.1, обновлён zxing до v3.5.3 |
v3.1.0 | 2023-12-31 | Обновлён CameraScan до v1.1.0, обновлён zxing до v3.5.2, обновлён compileSdkVersion до 34, обновлён Gradle до v8.0 |
v3.0.1 | 2023-9-13 | Обновлён CameraScan до v1.0.1, обновлён ViewfinderView до v1.1.0 |
v3.0.0 | 2023-8-23 | Разделил и реорганизовал общие базовые классы, в дальнейшем будет проще поддерживать; удалил зависимость от CameraScan, заменил её на CameraScan; заменил ViewfinderView на ViewfinderView; удалил CaptureActivity и CaptureFragment, заменил их на BarcodeCameraScanActivity и BarcodeCameraScanFragment; оптимизировал опыт работы с производительностью процесса анализа сканирования (оптимизировал процесс анализа данных кадра) |
v2.4.0 | 2023-4-15 | Оптимизирована конфигурация по умолчанию для CameraScan (конфигурация CameraConfig), оптимизирован пользовательский атрибут ViewfinderView (добавлен laserDrawableRatio), оптимизирована обработка данных YUV в ImageAnalyzer, обновлен CameraX до v1.2.2 |
Посмотреть больше записей журнала версий
Пожертвования
Если вам нравится ZXingLite или вы считаете, что ZXingLite помог вам, вы можете поддержать его, поставив звезду. Ваша поддержка — моя мотивация. Спасибо!
Вы также можете сканировать следующий QR-код, чтобы поддержать автора:
О себе
Мой блог | GitHub | Gitee | CSDN |
---|---|---|---|
[Блог автора] | [GitHub автора] | [Gitee автора] | [CSDN автора] |
Официальный аккаунт в WeChat | Jenly666 |
Электронная почта Gmail | jenly1314@gmail.com |
Электронная почта QQ | jenly1314@vip.qq.com |
QQ группа | 20867961 |
QQ группа | 64020761 |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )