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 dostęp do aparatu, a jednocześnie dba o prywatność użytkowników. W tym celu przekaż zadanie skanowania kodu usługom Google Play i zwracaj do aplikacji tylko wyniki skanowania (film 1). Przetwarzanie obrazu odbywa się na urządzeniu, a Google nie przechowuje wyników ani danych obrazów. Interfejs API obsługuje te same formaty kodu co ML Kit Barcode Scanning API i zwraca ten sam obiekt Barcode.

Ten interfejs API idealnie nadaje się do aplikacji, które wymagają bezproblemowego skanowania kodu bez konieczności niestandardowego interfejsu użytkownika czy aparatu. Implementacja odbywa się w całości w Usługach Google Play, co minimalizuje wpływ na rozmiar aplikacji.

Począwszy od wersji 16.1.0, można włączyć automatyczne powiększenie, aby skaner kodów Google mógł automatycznie skanować kody kreskowe znajdujące się daleko od aparatu. Gdy użytkownik skieruje urządzenie na kod kreskowy, skaner automatycznie go wykryje i powiększy. Dzięki temu nie musisz ręcznie dostosowywać powiększenia, dzięki czemu skanowanie kodów kreskowych jest szybsze, dokładniejsze i bardziej dostępne (zobacz 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 korzystanie z interfejsu ML Kit Barcode Scanning API.

Jeśli masz pytania, chcesz zgłosić błąd lub potrzebujesz pomocy, 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ść repozytorium Google Maven i centralne repozytorium Maven w części dependencyResolutionManagement:

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. Dodaj zależność Usług Google Play do 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, aby Usługi Google Play automatycznie pobierały moduł skanera na urządzenie, gdy aplikacja jest instalowana 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 Usług Google Play.

    Jeśli nie włączysz pobierania modułów w czasie instalacji lub nie zażądasz pobrania treści dla pełnoletnich, a moduł skanera nie jest już zainstalowany do innego zastosowania, Usługi Google Play pobierzą go przy pierwszym użyciu.

Zeskanuj kod

Wykonaj poniższe czynności, aby zeskanować kod kreskowy.

  1. Opcjonalnie: skonfiguruj skaner kodu.

    Jeśli wiesz, jakie formaty kodów kreskowych chcesz odczytywać, możesz zwiększyć szybkość wykrywania kodów kreskowych, konfigurując go tak, aby wykrywał tylko te formaty. 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ć tę funkcję od wersji 16.1.0, wywołaj enableAutoZoom() zgodnie z poniższym przykładem 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 instancję GmsBarcodeScanner zgodnie z przykładowym kodem:

    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. Poproś o zeskanowanie kodu, dzwoniąc 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 działanie w polu Barcode.

    Kotlin

    val rawValue: String? = barcode.rawValue
    

    Java

    String rawValue = barcode.getRawValue();