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

API اسکنر کد گوگل، یک راه‌حل کامل برای اسکن کد بدون نیاز به درخواست مجوز دوربین توسط برنامه شما، ضمن حفظ حریم خصوصی کاربر، ارائه می‌دهد. این کار با واگذاری وظیفه اسکن کد به سرویس‌های گوگل پلی و بازگرداندن فقط نتایج اسکن به برنامه شما انجام می‌شود (فیلم ۱). تمام پردازش تصویر در دستگاه انجام می‌شود و گوگل نتایج یا داده‌های تصویر را ذخیره نمی‌کند. این API از همان قالب‌های کدی که API اسکن بارکد ML Kit پشتیبانی می‌کند، پشتیبانی می‌کند و همان شیء Barcode را برمی‌گرداند.

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

از نسخه ۱۶.۱.۰ به بعد، می‌توانید زوم خودکار را فعال کنید تا اسکنر کد گوگل بتواند بارکدهایی را که از دوربین دور هستند، به طور خودکار اسکن کند. وقتی کاربران دستگاه‌های خود را به سمت یک بارکد می‌گیرند، اسکنر به طور هوشمند بارکد را شناسایی و روی آن زوم می‌کند. این امر نیاز به تنظیمات زوم دستی را از بین می‌برد و اسکن بارکد را سریع‌تر، دقیق‌تر و در دسترس‌تر می‌کند (به ویدیوی ۲ مراجعه کنید).

ویدئو ۱. ادغام با اسکنر کد گوگل ویدئو ۲. افکت زوم خودکار

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

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

قبل از اینکه شروع کنی

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

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

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

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

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

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

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

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

اسکن یک کد

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

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

    اگر می‌دانید کدام فرمت‌های بارکد را می‌خواهید بخوانید، می‌توانید با پیکربندی آشکارساز بارکد برای شناسایی فقط آن فرمت‌ها، سرعت آن را بهبود بخشید. به عنوان مثال، برای شناسایی فقط کدهای Aztec و کدهای 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();

    به طور پیش‌فرض، بزرگنمایی خودکار غیرفعال است. برای فعال کردن قابلیت بزرگنمایی خودکار از نسخه ۱۶.۱.۰ به بعد، تابع 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();