Google Code Scanner API מספק פתרון מלא לסריקת קוד, בלי לבקש מהאפליקציה הרשאת גישה למצלמה, תוך שמירה על פרטיות המשתמשים. כדי לעשות זאת, הענקתם את המשימה של סריקת הקוד לשירותי Google Play והחזרת רק את תוצאות הסריקה לאפליקציה (סרטון 1).
כל עיבוד התמונות מתבצע במכשיר, ו-Google לא שומרת את התוצאות או את נתוני התמונות. ה-API תומך באותם פורמטים של קוד שבהם תומך ML Kit Barcode Scanning API ומחזיר את אותו אובייקט Barcode
.
ה-API הזה אידיאלי לאפליקציות שדורשות סריקה חלקה של הקוד בלי צורך בממשק משתמש מותאם אישית או במצלמה. ההטמעה מתבצעת במלואה בשירותי Google Play, כך שההשפעה על גודל האפליקציה היא מינימלית.
החל מגרסה 16.1.0, ניתן להפעיל זום אוטומטי כדי לאפשר לסורק הקודים של Google לסרוק באופן אוטומטי ברקודים שרחוקים מהמצלמה. כשמשתמשים מכוונים את המכשירים שלהם לברקוד, הסורק יזהה את הברקוד ויגדיל את התצוגה שלו בצורה חכמה. כך לא צריך לבצע התאמות ידניות של מרחק התצוגה, וכך סריקת הברקוד מהירה יותר, מדויקת יותר ונגישה יותר (ראו סרטון 2).
סרטון 1. שילוב סורק הקודים של Google | סרטון 2. אפקט של זום אוטומטי |
למקרי שימוש מורכבים יותר שמחייבים ממשק משתמש מותאם אישית, מומלץ להשתמש ישירות ב-ML Kit Barcode Scanning API.
יש לכם שאלות? תוכלו לדווח על באג או לקבל עזרה בדף הקהילה של ML Kit.
לפני שמתחילים
כדי להכין את האפליקציה שלך, בצע את השלבים המפורטים בקטעים הבאים.
הגדרת האפליקציה
בקובץ
settings.gradle
ברמה העליונה, כוללים את מאגר Maven של Google ואת המאגר המרכזי של Maven בבלוקdependencyResolutionManagement
:dependencyResolutionManagement { repositories { google() mavenCentral() } }
מוסיפים את יחסי התלות של Google Play Services עבור ה-SDK
play-services-code-scanner
לקובץ ה-build של Gradle של המודול, שהוא בדרך כללapp/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-code-scanner:16.1.0' }
ניתן להגדיר את האפליקציה כך ש-Google Play Services יוריד למכשיר באופן אוטומטי את מודול הסורק בזמן שהאפליקציה מותקנת מחנות Play.
<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="barcode_ui"/> ... </application>
אפשר גם לבדוק במפורש את הזמינות של מודול הסורק ולבקש הורדה דרך ModuleInstallClient API של Google Play Services.
אם לא תפעילו הורדות של מודולים בזמן ההתקנה או תבקשו הורדות מפורשות, ומודול הסורק עדיין לא מותקן בתרחיש אחר, אפליקציית Google Play Services תוריד את מודול הסורק בפעם הראשונה שמשתמשים בו.
סריקת קוד
כדי לסרוק ברקוד, מבצעים את השלבים הבאים.
אופציונלי: מגדירים את סורק הקודים.
אם יודעים אילו פורמטים של ברקוד מצפים לקרוא, אפשר להגדיר אותו כך שיזהה רק את הפורמטים האלה, וכך לשפר את המהירות של מזהה הברקוד. לדוגמה, כדי לזהות רק קוד אצטקי וקודי QR, בונים אובייקט
GmsBarcodeScannerOptions
כמו בדוגמה הבאה: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();
כברירת מחדל, הזום האוטומטי מושבת. כדי להפעיל את הפונקציונליות של הזום האוטומטי שמתחיל בגרסה 16.1.0, צריך לקרוא לפונקציה
enableAutoZoom()
כפי שמוצג בקוד הבא.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();
קבלו מופע של
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);
צריך להתקשר אל
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 });
משתמשים ב-
Barcode
שמתקבל.Kotlin
val rawValue: String? = barcode.rawValue
Java
String rawValue = barcode.getRawValue();