توفّر 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.
قبل البدء
لإعداد تطبيقك، أكمِل الخطوات الواردة في الأقسام التالية.
ضبط إعدادات تطبيقك
في ملف
settings.gradle
من المستوى الأعلى، أدرِج مستودع Maven من Google و مستودع Maven المركزي ضمن القسمdependencyResolutionManagement
:dependencyResolutionManagement { repositories { google() mavenCentral() } }
أضِف الاعتمادية على "خدمات Google Play" لحزمة
play-services-code-scanner
SDK إلى ملف إنشاء Gradle الخاص بوحدتك، والذي يكون عادةًapp/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-code-scanner:16.1.0' }
يمكنك ضبط إعدادات تطبيقك لتنزيل "خدمات Google Play" تلقائيًا لتحميل وحدة الماسح الضوئي على الجهاز أثناء تثبيت تطبيقك من "متجر Play".
<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="barcode_ui"/> ... </application>
يمكنك أيضًا التحقّق صراحةً من توفّر وحدة الماسح الضوئي وطلب تنزيلها من خلال واجهة برمجة التطبيقات ModuleInstallClient API في "خدمات Google Play".
إذا لم تفعِّل عمليات تنزيل الوحدات أثناء التثبيت أو طلبت عمليات تنزيل صريحة، ولم تكن وحدة الماسح الضوئي مثبَّتة لحالة استخدام أخرى، ستنزِّل "خدمات Google Play" وحدة الماسح الضوئي في المرة الأولى التي يتم فيها استخدامها.
مسح رمز ضوئيًا
اتّبِع الخطوات التالية لمسح رمز شريطي ضوئيًا.
اختياري: ضبط الماسح الضوئي للرموز
إذا كنت تعرف تنسيقات الرموز الشريطية التي تتوقّع قراءتها، يمكنك تحسين سرعة أداة رصد الرموز الشريطية من خلال ضبطها لرصد هذه التنسيقات فقط. على سبيل المثال، لرصد رموز 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();
احصل على مثيل من
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);
اطلب مسح رمز ضوئيًا من خلال الاتصال على
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 });
أدخِل اسمًا لملف
Barcode
الناتج.Kotlin
val rawValue: String? = barcode.rawValue
Java
String rawValue = barcode.getRawValue();