کدخوان Google (فقط Android)

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

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

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

ویدیو ۱. یکپارچه‌سازی کدخوان Google ویدیو ۲. جلوه بزرگ‌نمایی خودکار

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

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

قبل‌از شروع

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

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

  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. اختیاری: کدخوان را پیکربندی کنید.

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

    Kotlin

    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() تماس بگیرید.

    Kotlin

    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 را دریافت کنید، همان‌طور که در نمونه کد نشان داده شده است:

    Kotlin

    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()، درخواست اسکن کد کنید.

    Kotlin

    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 حاصل را مدیریت کنید.

    Kotlin

    val rawValue: String? = barcode.rawValue

    جاوا

    String rawValue = barcode.getRawValue();