اسکنر کد گوگل (فقط اندروید)

Google code scanner API یک راه حل کامل برای اسکن کد بدون نیاز به برنامه شما برای درخواست مجوز دوربین و در عین حال حفظ حریم خصوصی کاربر ارائه می دهد. این کار با واگذاری وظیفه اسکن کد به خدمات Google Play و برگرداندن فقط نتایج اسکن به برنامه شما انجام می شود (ویدئو 1). تمام پردازش تصویر در دستگاه انجام می شود و Google نتایج یا داده های تصویر را ذخیره نمی کند. API از فرمت‌های کد مشابه با ML Kit Barcode Scanning API پشتیبانی می‌کند و همان شی Barcode را برمی‌گرداند.

این API برای برنامه‌هایی که نیاز به اسکن کد یکپارچه بدون نیاز به رابط کاربری سفارشی یا تجربه دوربین دارند ایده‌آل است. پیاده سازی کاملاً در خدمات Google Play قرار دارد و حداقل تأثیر را بر اندازه برنامه شما تضمین می کند.

با شروع نسخه 16.1.0، می‌توانید زوم خودکار را فعال کنید تا به اسکنر کد Google اجازه دهید به طور خودکار بارکدهایی را که از دوربین دور هستند اسکن کند. هنگامی که کاربران دستگاه های خود را به سمت بارکد می گیرند، اسکنر به طور هوشمند بارکد را تشخیص داده و روی آن بزرگنمایی می کند. این امر نیاز به تنظیمات دستی زوم را از بین می برد و اسکن بارکد را سریع تر، دقیق تر و در دسترس تر می کند (به ویدیوی 2 مراجعه کنید).

ویدئو 1. یکپارچه سازی اسکنر کد گوگل ویدئو 2. جلوه زوم خودکار

برای موارد استفاده پیچیده‌تر که به یک رابط کاربری سفارشی نیاز دارند، توصیه می‌کنیم مستقیماً از API اسکن بارکد ML Kit استفاده کنید.

اگر سؤالی دارید، می‌خواهید یک اشکال ارسال کنید یا به کمک نیاز دارید، صفحه انجمن کیت ML را بررسی کنید.

قبل از شروع

برای آماده سازی اپلیکیشن خود، مراحل زیر را انجام دهید.

برنامه خود را پیکربندی کنید

  1. در فایل settings.gradle سطح بالای خود، مخزن Maven Google و مخزن مرکزی Maven را در زیر بلوک dependencyResolutionManagement قرار دهید:

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. وابستگی خدمات Google Play را برای play-services-code-scanner SDK به فایل ساخت Gradle ماژول خود اضافه کنید که معمولاً app/build.gradle است:

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.1.0'
    }
    
  3. می‌توانید برنامه خود را طوری پیکربندی کنید که سرویس‌های Google Play به طور خودکار ماژول اسکنر را در دستگاه دانلود کنند، در حالی که برنامه شما از فروشگاه Play نصب شده است.

    <application ...>
      ...
      <meta-data
          android:name="com.google.mlkit.vision.DEPENDENCIES"
          android:value="barcode_ui"/>
      ...
    </application>
    

    همچنین می‌توانید صریحاً در دسترس بودن ماژول اسکنر را بررسی کنید و از طریق سرویس‌های Google Play ModuleInstallClient API درخواست دانلود کنید.

    اگر دانلود ماژول زمان نصب را فعال نکنید یا درخواست دانلودهای صریح را نداشته باشید - و ماژول اسکنر قبلاً برای موارد استفاده دیگری نصب نشده است - خدمات Google Play ماژول اسکنر را اولین بار که استفاده می شود دانلود می کند.

یک کد را اسکن کنید

مراحل زیر را برای اسکن بارکد انجام دهید.

  1. اختیاری: اسکنر کد را پیکربندی کنید.

    اگر می‌دانید کدام قالب‌های بارکد را می‌خواهید بخوانید، می‌توانید سرعت بارکد یاب را با پیکربندی آن به گونه‌ای که فقط آن فرمت‌ها را شناسایی کند، افزایش دهید. به عنوان مثال، برای شناسایی فقط کدهای آزتک و کدهای QR، یک شی GmsBarcodeScannerOptions مانند مثال زیر بسازید:

    کاتلین

    val options = GmsBarcodeScannerOptions.Builder()
       .setBarcodeFormats(
           Barcode.FORMAT_QR_CODE,
           Barcode.FORMAT_AZTEC)
       .build()
    

    جاوا

    GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()
       .setBarcodeFormats(
           Barcode.FORMAT_QR_CODE,
           Barcode.FORMAT_AZTEC)
       .build();
    

    به طور پیش فرض، زوم خودکار خاموش است. برای فعال کردن عملکرد بزرگنمایی خودکار که در نسخه 16.1.0 شروع می شود، همانطور که در مثال کد زیر نشان داده شده است enableAutoZoom() فراخوانی کنید.

    کاتلین

    val options = GmsBarcodeScannerOptions.Builder()
       .setBarcodeFormats(...)
       .enableAutoZoom() // available on 16.1.0 and higher
       .build()
    

    جاوا

    GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()
       .setBarcodeFormats(...)
       .enableAutoZoom() // available on 16.1.0 and higher
       .build();
    
  2. همانطور که در مثال کد نشان داده شده است، یک نمونه از GmsBarcodeScanner دریافت کنید:

    کاتلین

    val scanner = GmsBarcodeScanning.getClient(this)
    // Or with a configured options
    // val scanner = GmsBarcodeScanning.getClient(this, options)
    

    جاوا

    GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(this);
    // Or with a configured options
    // GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(context, options);
    
  3. با فراخوانی startScan() اسکن کد را درخواست کنید.

    کاتلین

    scanner.startScan()
       .addOnSuccessListener { barcode ->
           // Task completed successfully
       }
       .addOnCanceledListener {
           // Task canceled
       }
       .addOnFailureListener { e ->
           // Task failed with an exception
       }
    

    جاوا

    scanner
       .startScan()
       .addOnSuccessListener(
           barcode -> {
             // Task completed successfully
           })
       .addOnCanceledListener(
           () -> {
             // Task canceled
           })
       .addOnFailureListener(
           e -> {
             // Task failed with an exception
           });
    
  4. Barcode حاصل را مدیریت کنید.

    کاتلین

    val rawValue: String? = barcode.rawValue
    

    جاوا

    String rawValue = barcode.getRawValue();