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

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

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

    اگر بارگیری‌های ماژول زمان نصب را فعال نکنید یا بارگیری‌های صریح را درخواست نکنید—و ماژول اسکنر ازقبل برای مورد استفاده دیگری نصب نشده باشد—خدمات 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();

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