Сканер кода Google (бета)

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

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

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

Прежде чем вы начнете

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

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

  1. В файле settings.gradle верхнего уровня включите репозиторий Google Maven и центральный репозиторий 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.0.0-beta3'
    }
    
  3. Вы можете настроить приложение так, чтобы сервисы Google Play автоматически загружали модуль сканера на устройство, пока ваше приложение установлено из Play Store.

    <application ...>
      ...
      <meta-data
          android:name="com.google.mlkit.vision.DEPENDENCIES"
          android:value="barcode_ui"/>
      ...
    </application>
    

    Вы также можете явно проверить доступность модуля сканера и запросить загрузку через ModuleInstallClient API сервисов 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();

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. Обработайте полученный штрих-код

Котлин

val rawValue: String? = barcode.rawValue

Джава

String rawValue = barcode.getRawValue();