Interfejs API skanera kodu Google to kompletne rozwiązanie do skanowania kodu, które nie wymaga od aplikacji prośby o dostęp do aparatu, a jednocześnie chroni prywatność użytkownika. Osiąga się to, delegując zadanie skanowania kodu do usług Google Play i zwracając 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 kodów co interfejs ML Kit Barcode Scanning API i zwraca ten sam obiekt Barcode
.
Ten interfejs API jest idealny do skanowania kodu bez konieczności korzystania z niestandardowego interfejsu użytkownika ani aparatu. Implementacja znajduje się całkowicie 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, aby skaner kodów Google mógł automatycznie skanować kody kreskowe, które znajdują się daleko od kamery. Gdy użytkownicy skierują urządzenie na kod kreskowy, skaner inteligentnie go wykryje i powiększy. Dzięki temu nie trzeba ręcznie dostosowywać powiększenia, co sprawia, że 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 przypadku bardziej złożonych zastosowań, 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 potrzebujesz pomocy, odwiedź stronę społeczności ML Kit.
Zanim zaczniesz
Aby przygotować aplikację, wykonaj czynności opisane w poniższych sekcjach.
Konfiguracja aplikacji
W pliku
settings.gradle
najwyższego poziomu dodaj repozytorium Maven firmy Google i centralne repozytorium Maven w blokudependencyResolutionManagement
:dependencyResolutionManagement { repositories { google() mavenCentral() } }
Dodaj zależność Usług Google Play do interfejsu
play-services-code-scanner
SDK do pliku build.gradle modułu, który jest zwykleapp/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-code-scanner:16.1.0' }
Możesz skonfigurować aplikację tak, aby Usługi Google Play automatycznie pobierały moduł skanera na urządzenie podczas instalowania aplikacji ze Sklepu Play.
<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="barcode_ui"/> ... </application>
Możesz też sprawdzić dostępność modułu skanera i poprosić o jego pobranie za pomocą interfejsu API ModuleInstallClient Usług Google Play.
Jeśli nie włączysz pobierania modułów w czasie instalacji ani nie poprosisz o pobieranie, a moduł skanera nie jest już zainstalowany w ramach innego przypadku użycia, usługi Google Play pobierają moduł skanera przy pierwszym użyciu.
Zeskanuj kod
Aby zeskanować kod kreskowy, wykonaj te czynności.
Opcjonalnie: skonfiguruj skaner kodów.
Jeśli wiesz, jakie formaty kodów kreskowych chcesz odczytać, możesz zwiększyć szybkość wykrywacza kodów kreskowych, konfigurując go tak, aby wykrywał tylko te formaty. Aby na przykład wykrywać tylko kody 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 funkcję
enableAutoZoom()
, jak pokazano 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();
Uzyskaj wystąpienie obiektu
GmsBarcodeScanner
, jak pokazano 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);
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 });
Przetwarzanie otrzymanego pliku
Barcode
.Kotlin
val rawValue: String? = barcode.rawValue
Java
String rawValue = barcode.getRawValue();