Skaner kodów Google (tylko w Androidzie)

Interfejs Google Code Scanner API to kompleksowe rozwiązanie do skanowania kodu bez konieczności proszenia aplikacji o zgodę na dostęp do aparatu, chroniąc jednocześnie prywatność użytkownika. W tym celu przekazujesz Usługom Google Play zadanie skanowania kodu i zwracasz do aplikacji tylko wyniki skanowania (film 1). Przetwarzanie obrazu odbywa się na urządzeniu, a Google nie przechowuje wyników ani danych obrazu. Interfejs API obsługuje te same formaty kodu co ML Kit Barcode Scanning API i zwraca ten sam obiekt Barcode.

Ten interfejs API jest idealny w przypadku aplikacji, które wymagają płynnego skanowania kodu bez konieczności instalowania niestandardowego interfejsu czy korzystania z aparatu. Implementacja odbywa się w całości w Usługach Google Play, co zapewnia minimalny wpływ na rozmiar aplikacji.

Począwszy od wersji 16.1.0, możesz włączyć automatyczne powiększanie, by skaner kodów Google automatycznie skanował kody kreskowe znajdujące się daleko od aparatu. Gdy użytkownicy skierują urządzenia na kod kreskowy, skaner inteligentnie go wykryje i powiększy. Eliminuje to potrzebę ręcznego dostosowywania powiększenia, dzięki czemu skanowanie kodów kreskowych jest szybsze, dokładniejsze i bardziej dostępne (patrz Film 2).

Film 1. Integracja ze skanerem kodów Google Film 2. Efekt automatycznego powiększenia

W bardziej złożonych przypadkach, które wymagają niestandardowego interfejsu użytkownika, zalecamy bezpośrednie użycie interfejsu ML Kit Barcode Scanning API.

Jeśli masz pytania, chcesz zgłosić błąd lub uzyskać pomoc, odwiedź stronę społeczności ML Kit.

Zanim zaczniesz

Aby przygotować aplikację, wykonaj czynności opisane w poniższych sekcjach.

Konfiguracja aplikacji

  1. W pliku settings.gradle najwyższego poziomu umieść w bloku dependencyResolutionManagement repozytorium Google Maven i centralne repozytorium Maven:

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. Dodaj zależność Usług Google Play od pakietu SDK play-services-code-scanner do pliku build.gradle modułu. Jest to zwykle app/build.gradle:

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.1.0'
    }
    
  3. Możesz skonfigurować aplikację tak, by Usługi Google Play automatycznie pobierały moduł skanera na urządzenie, gdy jest ona zainstalowana ze Sklepu Play.

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

    Możesz też bezpośrednio sprawdzić dostępność modułu skanera i poprosić o jego pobranie za pomocą interfejsu ModuleInstallClient API z Usług Google Play.

    Jeśli nie włączysz pobierania modułów czasu instalacji ani nie poprosisz o jednoznaczne pobieranie, a moduł skanera nie jest już zainstalowany do innego zastosowania, Usługi Google Play pobierzą moduł skanera przy pierwszym użyciu.

Zeskanuj kod

Aby zeskanować kod kreskowy, wykonaj te czynności.

  1. Opcjonalnie: skonfiguruj skaner kodu.

    Jeśli wiesz, które formaty kodów kreskowych zamierzasz odczytywać, możesz przyspieszyć wykrywanie kodów kreskowych, konfigurując je pod kątem wykrywania tylko tych formatów. Aby np. wykryć tylko kod Aztec i kody QR, utwórz obiekt GmsBarcodeScannerOptions jak w tym przykładzie:

    Kotlin

    val options = GmsBarcodeScannerOptions.Builder()
       .setBarcodeFormats(
           Barcode.FORMAT_QR_CODE,
           Barcode.FORMAT_AZTEC)
       .build()
    

    Java

    GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()
       .setBarcodeFormats(
           Barcode.FORMAT_QR_CODE,
           Barcode.FORMAT_AZTEC)
       .build();
    

    Domyślnie automatyczne powiększanie jest wyłączone. Aby włączyć funkcję automatycznego powiększania od wersji 16.1.0, wywołaj enableAutoZoom() jak w tym przykładzie kodu.

    Kotlin

    val options = GmsBarcodeScannerOptions.Builder()
       .setBarcodeFormats(...)
       .enableAutoZoom() // available on 16.1.0 and higher
       .build()
    

    Java

    GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()
       .setBarcodeFormats(...)
       .enableAutoZoom() // available on 16.1.0 and higher
       .build();
    
  2. Pobierz wystąpienie GmsBarcodeScanner, tak jak w przykładowym kodzie:

    Kotlin

    val scanner = GmsBarcodeScanning.getClient(this)
    // Or with a configured options
    // val scanner = GmsBarcodeScanning.getClient(this, options)
    

    Java

    GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(this);
    // Or with a configured options
    // GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(context, options);
    
  3. Aby poprosić o zeskanowanie kodu, zadzwoń pod numer startScan().

    Kotlin

    scanner.startScan()
       .addOnSuccessListener { barcode ->
           // Task completed successfully
       }
       .addOnCanceledListener {
           // Task canceled
       }
       .addOnFailureListener { e ->
           // Task failed with an exception
       }
    

    Java

    scanner
       .startScan()
       .addOnSuccessListener(
           barcode -> {
             // Task completed successfully
           })
       .addOnCanceledListener(
           () -> {
             // Task canceled
           })
       .addOnFailureListener(
           e -> {
             // Task failed with an exception
           });
    
  4. Wykonaj obsługę wynikowego Barcode.

    Kotlin

    val rawValue: String? = barcode.rawValue
    

    Java

    String rawValue = barcode.getRawValue();