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.
לפני שמתחילים
כדי להכין את האפליקציה, צריך לבצע את השלבים בקטעים הבאים.
הגדרת האפליקציה
בקובץ
settings.gradle
ברמה העליונה, יש לכלול את מאגר Maven של Google במאגר המרכזי של Maven חסימתdependencyResolutionManagement
:dependencyResolutionManagement { repositories { google() mavenCentral() } }
צריך להוסיף את התלות של Google Play Services עבור
play-services-code-scanner
SDK לקובץ ה-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>
אפשר גם לבדוק באופן מפורש את הזמינות ואת הבקשה של מודול הסורק הורדה דרך Google Play Services ModuleInstallClient API.
אם לא מפעילים הורדות של מודולים בזמן ההתקנה או שולחים בקשה לתוכן בוטה הורדות - ומודול הסורק עדיין לא מותקן במכשיר אחר תרחיש לדוגמה – תוכנת 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();