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

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 .

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

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

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

  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.1.0'
    }
    
  3. Вы можете настроить свое приложение так, чтобы службы Google Play автоматически загружали модуль сканера на устройство, пока ваше приложение установлено из Play Store.

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

    Вы также можете явно проверить доступность модуля сканера и запросить загрузку через API сервисов Google Play ModuleInstallClient .

    Если вы не включаете загрузку модулей во время установки или не запрашиваете явную загрузку (а модуль сканера еще не установлен для другого варианта использования), службы Google Play загружают модуль сканера при первом его использовании.

Сканировать код

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

  1. Необязательно: Настройте сканер кода.

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