ה-API של סורק הקודים של Google מספק פתרון מלא לסריקת קודים בלי לבקש מהאפליקציה לבקש הרשאת גישה תוך שמירה על פרטיות המשתמשים. ניתן לעשות זאת על ידי האצלת הסריקה של הקוד לשירותי Google Play והחזרת תוצאות הסריקה לאפליקציה בלבד. כל עיבוד התמונות מתבצע במכשיר, ו-Google לא מאחסנת את התוצאות או את נתוני התמונות. אותו ממשק API תומך באותם פורמטים של קודים כמו ב-ML Kit Barcode Scanning API, ומחזיר את אותו אובייקט Barcode (ברקוד).
ממשק ה-API הזה אידיאלי לאפליקציות שפשוט צריכות לסרוק קוד ולא דורשות ממשק משתמש מותאם אישית או ממשק מצלמה. ההטמעה מיושמת באופן מלא בשירותי Google Play, כך שאין השפעה משמעותית על גודל האפליקציה. לתרחישים מורכבים יותר שדורשים ממשק משתמש מותאם אישית, השתמשו ישירות ב-ML Kit Barcode Scanning API.
אם יש לכם שאלות, אם אתם רוצים לדווח על באג או זקוקים לעזרה, היכנסו לדף הקהילה של ערכת ה-ML.
לפני שמתחילים
כדי להכין את האפליקציה, יש להשלים את השלבים בקטעים הבאים.
מגדירים את האפליקציה
בקובץ
settings.gradle
ברמה העליונה, כוללים את מאגר Maven של Google ואת מאגר הנתונים המרכזי של Maven בקטעdependencyResolutionManagement
:dependencyResolutionManagement { repositories { google() mavenCentral() } }
מוסיפים את התלות של שירותי Google Play עבור ה-SDK של
play-services-code-scanner
לקובץ ה-Gradle של המודול, שהוא בדרך כללapp/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-code-scanner:16.0.0-beta3' }
ניתן להגדיר שהאפליקציה 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, צריך לבנות אובייקט של GmsBarcodeScanner options כמו בדוגמה הבאה:
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();
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. טפל בברקוד שמתקבל
Kotlin
val rawValue: String? = barcode.rawValue
Java
String rawValue = barcode.getRawValue();