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
W pliku
settings.gradle
najwyższego poziomu umieść repozytorium Google Maven i centralne repozytorium Maven w blokudependencyResolutionManagement
:dependencyResolutionManagement { repositories { google() mavenCentral() } }
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 jestapp/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-code-scanner:16.0.0-beta3' }
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();