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

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

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

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

الفيديو 1. دمج "الماسح الضوئي لرموز Google" الفيديو 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 في "خدمات 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();

    تكون ميزة "التكبير/التصغير التلقائي" غير مفعّلة تلقائيًا. لتفعيل وظيفة "التكبير/التصغير التلقائي" بدءًا من الإصدار 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();