Google code Scanner API מספק פתרון מלא לסריקת קוד בלי שתצטרכו לבקש מהאפליקציה הרשאת גישה למצלמה, תוך שמירה על פרטיות המשתמשים. כדי לעשות זאת, אתם יכולים להעניק את המשימה של סריקת הקוד ל-Google Play Services והחזרה של תוצאות הסריקה לאפליקציה בלבד (סרטון 1).
כל עיבוד התמונות מתבצע במכשיר ו-Google לא מאחסנת את התוצאות או את נתוני התמונה. ה-API תומך באותם פורמטים של קוד כמו ML Kit Barcode Scanner ומחזיר את אותו אובייקט 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 ב-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();