Сканер кода Google (только для Android)

API сканера кода Google предоставляет комплексное решение для сканирования кода, не требуя от вашего приложения запроса разрешения на доступ к камере, сохраняя при этом конфиденциальность пользователя. Это достигается делегированием задачи сканирования кода сервисам Google Play и возвратом в ваше приложение только результатов сканирования (Видео 1). Вся обработка изображений происходит на устройстве, и Google не хранит ни результаты, ни данные изображения. API поддерживает те же форматы кода, что и API сканирования штрихкодов ML Kit , и возвращает тот же объект Barcode .

Этот API идеально подходит для приложений, которым требуется бесперебойное сканирование кода без необходимости в специальном пользовательском интерфейсе или использовании камеры. Реализация полностью реализована в сервисах Google Play, что обеспечивает минимальное влияние на размер вашего приложения.

Начиная с версии 16.1.0, вы можете включить функцию автоматического масштабирования, чтобы сканер Google Code автоматически сканировал штрихкоды, находящиеся далеко от камеры. Когда пользователи наводят свои устройства на штрихкод, сканер автоматически распознаёт его и увеличивает масштаб. Это устраняет необходимость ручной настройки масштаба, делая сканирование штрихкодов быстрее, точнее и доступнее (см. Видео 2).

Видео 1. Интеграция со сканером кода Google Видео 2. Эффект автомасштабирования

Для более сложных случаев использования, требующих специального пользовательского интерфейса, мы рекомендуем напрямую использовать API сканирования штрихкодов ML Kit .

Если у вас есть вопросы, вы хотите сообщить об ошибке или нуждаетесь в помощи, посетите страницу сообщества ML Kit .

Прежде чем начать

Чтобы подготовить свое приложение, выполните действия, описанные в следующих разделах.

Настройте свое приложение

  1. В файле верхнего уровня settings.gradle включите репозиторий Maven от Google и центральный репозиторий Maven в блок dependencyResolutionManagement :

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. Добавьте зависимость сервисов Google Play для SDK play-services-code-scanner в файл сборки Gradle вашего модуля, который обычно называется app/build.gradle :

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.1.0'
    }
    
  3. Вы можете настроить свое приложение таким образом, чтобы сервисы 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 загрузят модуль сканера при первом использовании.

Отсканируйте код

Для сканирования штрихкода выполните следующие шаги.

  1. Дополнительно: настройте сканер кодов.

    Если вы знаете, какие форматы штрихкодов вы планируете считывать, вы можете повысить скорость детектора штрихкодов, настроив его на обнаружение только этих форматов. Например, чтобы обнаруживать только код 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();
  2. Получите экземпляр 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);
  3. Запросите сканирование кода, вызвав 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
           });
  4. Обработайте полученный Barcode .

    Котлин

    val rawValue: String? = barcode.rawValue

    Ява

    String rawValue = barcode.getRawValue();