Skaner kodów Google (beta)

Interfejs Google Scanner Code Scanner to kompleksowe rozwiązanie do skanowania kodów bez konieczności proszenia aplikacji o przyznanie uprawnień dostępu do kamery. Chroni przy tym prywatność użytkowników. W tym celu trzeba przekazać zadanie skanowania kodu do usług Google Play i zwrócić tylko wyniki skanowania do aplikacji. Całość przetwarzania obrazów odbywa się na urządzeniu, a Google nie przechowuje wyników ani danych obrazu. Interfejs API obsługuje te same formaty kodu co interfejs ML Kit Barcode Scanning API i zwraca ten sam obiekt Barcode.

Ten interfejs jest idealny dla aplikacji, które potrzebują tylko skanowania kodu i nie wymagają niestandardowego interfejsu ani obsługi kamery. Ta implementacja jest w całości wykonywana w ramach Usług Google Play, więc nie ma to znaczącego wpływu na rozmiar Twojej aplikacji. W przypadku bardziej złożonych przypadków, gdy potrzebujesz niestandardowego interfejsu użytkownika, skorzystaj bezpośrednio z interfejsu ML Kit Barcode Scanning API.

Jeśli masz pytania, chcesz przesłać błąd lub potrzebujesz pomocy, odwiedź stronę społeczności ML Kit.

Zanim zaczniesz

Aby przygotować aplikację, wykonaj czynności opisane w kolejnych sekcjach.

Konfiguracja aplikacji

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

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

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.0.0-beta3'
    }
    
  3. Możesz skonfigurować aplikację tak, aby Usługi Google Play automatycznie pobierały skaner 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 pobranie go za pomocą interfejsu ModuleInstallClient API w Usługach Google Play.

    Jeśli nie włączysz pobierania modułu instalacji w momencie instalacji lub nie poprosisz o pobranie tego modułu, Usługi Google Play będą go automatycznie pobierać przy pierwszym użyciu, pod warunkiem że nie został on zainstalowany w innym przypadku.

Zeskanuj kod

1. (Opcjonalnie) Konfigurowanie skanera kodów

Jeśli wiesz, które formaty kodów kreskowych chcesz odczytać, możesz zwiększyć szybkość jego wykrywania, konfigurując je tylko pod kątem tych formatów. Aby na przykład wykrywać tylko kody Aztec i kody QR, utwórz obiekt GmsBarcodeScannerOptions w następujący sposób:

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();

2. Pobieranie instancji GmsBarcodeScanner

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, wywołując metodę 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. Przetwórz powstały kod kreskowy

Kotlin

val rawValue: String? = barcode.rawValue

Java

String rawValue = barcode.getRawValue();