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

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

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

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

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

بالنسبة إلى حالات الاستخدام الأكثر تعقيدًا التي تتطلّب واجهة مستخدم مخصّصة، ننصحك باستخدام 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>
    

    يمكنك أيضًا التحقّق صراحةً من توفّر وحدة الماسح الضوئي وطلب تنزيلها من خلال واجهة برمجة التطبيقات ModuleInstallClient API في "خدمات Google Play".

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

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

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

  1. اختياري: ضبط الماسح الضوئي للرموز

    إذا كنت تعرف تنسيقات الرموز الشريطية التي تتوقّع قراءتها، يمكنك تحسين سرعة أداة رصد الرموز الشريطية من خلال ضبطها لرصد هذه التنسيقات فقط. على سبيل المثال، لرصد رموز Aztec وQR فقط، أنشئ عنصرًا 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();