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

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

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

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

الفيديو 1: دمج Google Code Scanner الفيديو 2: تأثير التكبير/التصغير التلقائي

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

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

قبل البدء

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

إعداد تطبيقك

  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 في &quot;خدمات Google Play&quot;.

    إذا لم تفعّل عمليات تنزيل الوحدات في وقت التثبيت أو تطلب عمليات تنزيل صريحة، ولم تكن وحدة الماسح الضوئي مثبَّتة من قبل لحالة استخدام أخرى، ستنزِّل &quot;خدمات Google Play&quot; وحدة الماسح الضوئي في المرة الأولى التي يتم فيها استخدامها.

مسح رمز ضوئيًا

اتّبِع الخطوات التالية لمسح رمز شريطي ضوئيًا.

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