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

‫Google Code Scanner API מספק פתרון מלא לסריקת קוד בלי שהאפליקציה תצטרך לבקש הרשאה למצלמה, תוך שמירה על פרטיות המשתמשים. הפעולה הזו מתבצעת על ידי העברת משימת סריקת הקוד אל Google Play Services והחזרת תוצאות הסריקה בלבד לאפליקציה (סרטון 1). כל עיבוד התמונות מתבצע במכשיר, ו-Google לא שומרת את התוצאות או את נתוני התמונות. ה-API תומך באותם פורמטים של קוד כמו ML Kit Barcode Scanning API ומחזיר את אותו אובייקט Barcode.

ה-API הזה מתאים במיוחד לאפליקציות שדורשות סריקת קוד חלקה בלי צורך בממשק משתמש מותאם אישית או בחוויית מצלמה מותאמת אישית. ההטמעה מתבצעת באופן מלא ב-Google Play Services, ולכן ההשפעה על גודל האפליקציה היא מינימלית.

החל מגרסה 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 לקובץ ה-build של Gradle של המודול, שבדרך כלל נמצא בנתיב play-services-code-scanner הבא: 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 מורידים את מודול הסורק בפעם הראשונה שמשתמשים בו.

סריקת קוד

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

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

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