API сканера кода Google предоставляет комплексное решение для сканирования кода, не требуя от вашего приложения запрашивать разрешение на доступ к камере, сохраняя при этом конфиденциальность пользователя. Это достигается путем делегирования задачи сканирования кода сервисам Google Play и возврата только результатов сканирования в ваше приложение (Видео 1). Вся обработка изображений происходит на устройстве, и Google не сохраняет результаты или данные изображения. API поддерживает те же форматы кода, что и API сканирования штрихкодов ML Kit , и возвращает тот же объект Barcode
.
Этот API идеально подходит для приложений, которым требуется бесшовное сканирование кода без необходимости в пользовательском интерфейсе или опыте камеры. Реализация полностью находится в сервисах Google Play, что обеспечивает минимальное влияние на размер вашего приложения.
Начиная с версии 16.1.0, вы можете включить автомасштабирование, чтобы сканер кода Google автоматически сканировал штрихкоды, которые находятся далеко от камеры. Когда пользователи направляют свои устройства на штрихкод, сканер интеллектуально распознает и увеличивает масштаб штрихкода. Это устраняет необходимость в ручной настройке масштаба, делая сканирование штрихкодов более быстрым, точным и доступным (см. Видео 2).
![]() | ![]() |
Видео 1. Интеграция сканера кода Google | Видео 2. Эффект автомасштабирования |
Для более сложных случаев использования, требующих индивидуального пользовательского интерфейса, мы рекомендуем использовать API сканирования штрихкодов ML Kit напрямую.
Если у вас есть вопросы, вы хотите сообщить об ошибке или вам нужна помощь, посетите страницу сообщества ML Kit .
Прежде чем начать
Чтобы подготовить свое приложение, выполните действия, описанные в следующих разделах.
Настройте свое приложение
В файле верхнего уровня
settings.gradle
включите репозиторий Maven от Google и центральный репозиторий Maven в блокеdependencyResolutionManagement
:dependencyResolutionManagement { repositories { google() mavenCentral() } }
Добавьте зависимость сервисов Google Play для SDK
play-services-code-scanner
в файл сборки Gradle вашего модуля, который обычно называетсяapp/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-code-scanner:16.1.0' }
Вы можете настроить приложение таким образом, чтобы сервисы Google Play автоматически загружали модуль сканера на устройство при установке приложения из Play Store.
<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="barcode_ui"/> ... </application>
Вы также можете явно проверить доступность модуля сканера и запросить загрузку через API ModuleInstallClient сервисов Google Play.
Если вы не включили загрузку модулей во время установки или не запросили явную загрузку, а модуль сканера еще не установлен для другого варианта использования, сервисы Google Play загрузят модуль сканера при первом использовании.
Сканировать код
Для сканирования штрих-кода выполните следующие действия.
Необязательно: Настройте сканер кода.
Если вы знаете, какие форматы штрихкодов вы ожидаете прочитать, вы можете улучшить скорость детектора штрихкодов, настроив его на обнаружение только этих форматов. Например, чтобы обнаружить только код Aztec и QR-коды, создайте объект
GmsBarcodeScannerOptions
, как в следующем примере:Котлин
val options = GmsBarcodeScannerOptions.Builder() .setBarcodeFormats( Barcode.FORMAT_QR_CODE, Barcode.FORMAT_AZTEC) .build()
Ява
GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder() .setBarcodeFormats( Barcode.FORMAT_QR_CODE, Barcode.FORMAT_AZTEC) .build();
По умолчанию автомасштабирование отключено. Чтобы включить функцию автомасштабирования, начиная с версии 16.1.0, вызовите
enableAutoZoom()
как показано в следующем примере кода.Котлин
val options = GmsBarcodeScannerOptions.Builder() .setBarcodeFormats(...) .enableAutoZoom() // available on 16.1.0 and higher .build()
Ява
GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder() .setBarcodeFormats(...) .enableAutoZoom() // available on 16.1.0 and higher .build();
Получите экземпляр
GmsBarcodeScanner
, как показано в примере кода:Котлин
val scanner = GmsBarcodeScanning.getClient(this) // Or with a configured options // val scanner = GmsBarcodeScanning.getClient(this, options)
Ява
GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(this); // Or with a configured options // GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(context, options);
Запросите сканирование кода, вызвав
startScan()
.Котлин
scanner.startScan() .addOnSuccessListener { barcode -> // Task completed successfully } .addOnCanceledListener { // Task canceled } .addOnFailureListener { e -> // Task failed with an exception }
Ява
scanner .startScan() .addOnSuccessListener( barcode -> { // Task completed successfully }) .addOnCanceledListener( () -> { // Task canceled }) .addOnFailureListener( e -> { // Task failed with an exception });
Обработайте полученный
Barcode
.Котлин
val rawValue: String? = barcode.rawValue
Ява
String rawValue = barcode.getRawValue();