ماسح رموز Google (Android فقط)

توفّر واجهة برمجة تطبيقات الماسح الضوئي لرمز Google حلاً كاملاً لمسح الرموز البرمجية بدون أن يطلب تطبيقك إذن الكاميرا مع الحفاظ على خصوصية المستخدم. ويتم تحقيق ذلك من خلال تفويض مهمة مسح الرمز البرمجي إلى "خدمات Google Play" وإرجاع نتائج الفحص فقط إلى تطبيقك (الفيديو 1). تتم كل عمليات معالجة الصور على الجهاز ولا تخزِّن Google النتائج أو بيانات الصور. تتوافق واجهة برمجة التطبيقات مع تنسيقات الرموز نفسها المستخدَمة في واجهة برمجة التطبيقات لأداة فحص الرموز الشريطية من ML Kit، وتعرض عنصر Barcode نفسه.

وتعد واجهة برمجة التطبيقات هذه مثالية للتطبيقات التي تتطلب فحصًا سلسًا للرموز البرمجية بدون الحاجة إلى تجربة واجهة مستخدم أو كاميرا مخصّصة. ويقع التنفيذ بالكامل في "خدمات Google Play"، ما يضمن أقل تأثير ممكن في حجم التطبيق

بدءًا من الإصدار 16.1.0، يمكنك تفعيل التكبير التلقائي للسماح لتطبيق ماسح رموز Google بإجراء مسح ضوئي تلقائي للرموز الشريطية البعيدة عن الكاميرا. عندما يوجِّه المستخدمون أجهزتهم إلى رمز شريطي، سيكتشف الماسح الضوئي للرمز الشريطي ويكبره بذكاء. يغنيك ذلك عن الحاجة إلى تعديلات يدوية للتكبير/التصغير، ما يجعل مسح الرمز الشريطي ضوئيًا أسرع وأكثر دقة ويسهل الوصول إليه (راجع الفيديو 2).

الفيديو 1. دمج الماسح الضوئي لرمز Google الفيديو 2. تأثير التكبير التلقائي

بالنسبة إلى حالات الاستخدام الأكثر تعقيدًا التي تتطلّب واجهة مستخدم مخصّصة، ننصحك باستخدام واجهة برمجة تطبيقات مسح الرمز الشريطي لحزمة تعلّم الآلة مباشرةً.

إذا كانت لديك أسئلة أو تريد إرسال خطأ أو كنت بحاجة إلى المساعدة، يُرجى الاطّلاع على صفحة منتدى ML Kit.

قبل البدء

لإعداد تطبيقك، أكمِل الخطوات الواردة في الأقسام التالية.

إعداد تطبيقك

  1. في ملف settings.gradle ذي المستوى الأعلى، أضِف مستودع Maven من Google ومستودع Maven المركزي ضمن مجموعة dependencyResolutionManagement:

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. أضِف تبعية خدمات Google Play لحزمة تطوير البرامج (SDK) 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()
    

    Java

    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()
    

    Java

    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)
    

    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. ابدأ التعامل مع Barcode الناتج.

    Kotlin

    val rawValue: String? = barcode.rawValue
    

    Java

    String rawValue = barcode.getRawValue();