סורק הקודים של Google (Android בלבד)

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.

לפני שמתחילים

כדי להכין את האפליקציה שלך, בצע את השלבים המפורטים בקטעים הבאים.

הגדרת האפליקציה

  1. בקובץ settings.gradle ברמה העליונה, כוללים את מאגר Maven של Google ואת המאגר המרכזי של Maven בבלוק dependencyResolutionManagement:

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. מוסיפים את יחסי התלות של 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'
    }
    
  3. ניתן להגדיר את האפליקציה כך ש-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 תוריד את מודול הסורק בפעם הראשונה שמשתמשים בו.

סריקת קוד

כדי לסרוק ברקוד, מבצעים את השלבים הבאים.

  1. אופציונלי: מגדירים את סורק הקודים.

    אם יודעים אילו פורמטים של ברקוד מצפים לקרוא, אפשר להגדיר אותו כך שיזהה רק את הפורמטים האלה, וכך לשפר את המהירות של מזהה הברקוד. לדוגמה, כדי לזהות רק קוד אצטקי וקודי 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();
    
  2. קבלו מופע של 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. צריך להתקשר אל 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. משתמשים ב-Barcode שמתקבל.

    Kotlin

    val rawValue: String? = barcode.rawValue
    

    Java

    String rawValue = barcode.getRawValue();