UROVO Android SDK/Kotlin

مثال UROVO لبرنامج ScanManager Kotlin وقائمة التحقق من الصحة

يقوم مخطط التنفيذ هذا بتكييف UROVO ScanManager API المعتمد في مثال صغير لنشاط Kotlin. إنه نموذج رمز للتحقق من الصحة، وليس وعدًا بالتوافق مع كل طراز أو برنامج ثابت UROVO.

16 دقيقة للقراءةتمت المراجعة: 2026-08-10مطورو Android يدمجون أجهزة الرمز الشريطي UROVO
UROVO عرض ميزة DT66 لتكامل Android مع ScanManager
SDK - عينة مدعومة بالمرجع / لم يتم التحقق من صحتها في كل تكوين مستهدف

نقاط البداية التي تم التحقق منها

API خط الأساسUROVO Android SDK الإصدار 4.1.0326

استخدم الحزمة المعتمدة وقم بتسجيل المجموع الاختباري للقطعة الأثرية.

فك تشفير القناةبث ScanManager.ACTION_DECODE

قراءة البيانات الموثقة والسلسلة والطول والنوع الإضافي.

دورة الحياةفتح وتسجيل؛ التوقف، إلغاء التسجيل والإغلاق

مطابقة الملكية مع بنية التطبيق.

التوافقالجهاز الدقيق + نظام التشغيل + البرامج الثابتة + SDK + إنشاء التطبيق

إن وجود API وحده لا يعد بمثابة التحقق من الصحة.

قاعدة التنفيذ

تعامل مع ScanManager كمورد جهاز له مالك صريح. افتحه، وحدد وضع الإخراج المقصود، وقم بتسجيل جهاز استقبال فك التشفير، والتحقق من صحة كل حمولة، ثم قم بإلغاء التسجيل وإغلاقه بشكل حتمي. تأكيد سلوك الطريقة في عينة غرض الإنتاج.

01

قم بإعداد خط أساس قابل للتكرار SDK.

قم بتعبئة عنصر SDK المعتمد من خلال عملية التنزيل التي يتحكم فيها المطور. قم بتسجيل نسخته وSHA-256 جنبًا إلى جنب مع إصدار التطبيق وسجل الجهاز.

احتفظ بواجهات برمجة تطبيقات البائع خلف محول الماسح الضوئي حتى يمكن اختبار منطق الأعمال بدون أجهزة ويمكن استبدال تطبيق التقاط آخر.

  • تمت الموافقة على مصدر SDK فقط
  • تم تسجيل تجزئة القطعة الأثرية
  • تم تحديد حدود المحول
  • تم إنشاء مصفوفة الجهاز
02

امتلك دورة حياة الماسح الضوئي مرة واحدة

المستندات المرجعية API هي وظائف openScanner، وCloseScanner، وstartDecode، وstopDecode، ووضع الإخراج. قرر ما إذا كان النشاط أو الخدمة الأمامية أو أي مكون آخر على مستوى التطبيق يملك تلك الاستدعاءات.

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

  • مالك مورد واحد
  • تنظيف عاجز
  • تمت ملاحظة قيم الإرجاع
  • لا توجد حمولات في السجلات العادية
03

التحقق من صحة حمولة البث

يمكن أن يتضمن بث فك التشفير الناجح بيانات أولية وسلسلة تم فك تشفيرها وطول ونوع الرمز الشريطي. تحقق من الإجراء وقابلية البطلان والطول قبل تسليم حدث المجال.

اختر تمثيلاً رسميًا واحدًا. إذا كان التشفير مهمًا، فاحتفظ بالبايتات الأولية وفك التشفير ضمن مجموعة أحرف صريحة بدلاً من افتراض أن كل رمز شريطي هو ASCII بسيط.

  • العمل يطابق تماما
  • الطول متوافق مع الحمولة
  • سياسة الترميز موثقة
  • حارس حدث مكرر
04

الانتقال من العرض التجريبي إلى دليل الإنتاج

نجاح الترجمة يثبت توافق المصدر فقط. قم بتشغيل التطبيق على كل طراز ونظام تشغيل وبرامج ثابتة مقصودة مع تسميات تمثيلية وسيناريوهات دورة الحياة.

سجل إعدادات الماسح الضوئي ووضع الإخراج بعد التكوين. اختبار الانحدار بعد تغيير البرامج الثابتة أو SDK أو التطبيق أو سياسة MDM.

  • هيئة المسح التمثيلية
  • دورات النوم واستئناف
  • الحالات السريعة والطويلة
  • سجل اختبار الإصدار
مصفوفة القرار

خريطة حالة دورة حياة ScanManager

حافظ على توافق مكالمات الموارد مع حالة التطبيق التي يمكن ملاحظتها.

الدولةالإجراء المطلوباستجابة الفشل
البدءقم بإنشاء ScanManager وافتح الماسح الضوئيمنع الالتقاط وإظهار حالة التشخيص
جاهزضبط وضع الإخراج وتسجيل المتلقياقرأ مرة أخرى أو أبلغ عن فشل التكوين
التقاطابدأ في فك التشفير أو قبول أحداث التشغيلالمهلة والتوقف والسماح بإعادة المحاولة الخاضعة للرقابة
متوقف مؤقتًاإيقاف فك التشفير وإلغاء التسجيل كما هو مصمممنع التسليم إلى سير العمل غير النشط
دمرتأغلق الماسح الضوئي مرة واحدةسجل نتيجة التنظيف بدون بيانات حساسة
SDK

مثال على الحد الأدنى من دورة الحياة Kotlin.

تحقق من ثوابت وضع الإخراج وعلامات جهاز الاستقبال Android وملكية دورة الحياة مقابل SDK الدقيق والهدف API وبنية التطبيق.

UrovoScannerActivity.kt
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.device.ScanManager
import androidx.appcompat.app.AppCompatActivity

class UrovoScannerActivity : AppCompatActivity() {
    private val scanner = ScanManager()
    private var receiverRegistered = false

    private val decodeReceiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            if (intent.action != ScanManager.ACTION_DECODE) return
            val raw = intent.getByteArrayExtra(ScanManager.DECODE_DATA_TAG) ?: return
            val declaredLength = intent.getIntExtra(ScanManager.BARCODE_LENGTH_TAG, raw.size)
            val type = intent.getByteExtra(ScanManager.BARCODE_TYPE_TAG, 0)
            val value = intent.getStringExtra(ScanManager.BARCODE_STRING_TAG)
                ?: raw.copyOf(declaredLength.coerceIn(0, raw.size)).toString(Charsets.UTF_8)
            onValidatedScan(value, type)
        }
    }

    override fun onStart() {
        super.onStart()
        check(scanner.openScanner()) { "Scanner could not be opened" }
        // Confirm the broadcast-output constant in the SDK version you ship.
        check(scanner.switchOutputMode(0)) { "Output mode could not be set" }
        registerReceiver(decodeReceiver, IntentFilter(ScanManager.ACTION_DECODE))
        receiverRegistered = true
    }

    override fun onStop() {
        scanner.stopDecode()
        if (receiverRegistered) unregisterReceiver(decodeReceiver)
        receiverRegistered = false
        scanner.closeScanner()
        super.onStop()
    }

    private fun onValidatedScan(value: String, type: Byte) {
        // Route a sanitized domain event; do not log sensitive barcode values.
    }
}
قائمة مراجعة المشروع

قائمة التحقق من صحة ScanManager

قم بإرفاق هذا السجل بالتطبيق المعتمد وخط الأساس للجهاز.

  1. 01

    تم تسجيل إصدار SDK وSHA-256

  2. 02

    تم تسجيل الجهاز SKU ونظام التشغيل والبرامج الثابتة

  3. 03

    يفتح الماسح الضوئي ويغلق بشكل متكرر

  4. 04

    قراءة وضع الإخراج أو تأكيده

  5. 05

    تتطابق دورة حياة جهاز الاستقبال مع واجهة المستخدم النشطة

  6. 06

    تم فحص الإضافات الأولية والسلسلة والطول والنوع

  7. 07

    تم اختبار جميع الرموز المطلوبة

  8. 08

    تم اختبار عمليات المسح الطويلة والتالفة والسريعة

  9. 09

    تم اختبار وضع السكون وإعادة التشغيل ووضع الكشك MDM.

  10. 10

    لم يتم تسجيل أي بيانات حساسة للرمز الشريطي

FAQ

الأسئلة المتداولة

ماذا يعني SwitchOutputMode(0)؟

يوثق المرجع API تبديل وضع الإخراج، ولكن يجب التحقق من الثوابت والسلوك في إصدار SDK الدقيق والبرامج الثابتة للجهاز. لا تقم بنسخ ثابت العينة إلى الإنتاج دون التحقق.

هل يجب إغلاق الماسح الضوئي في وضع onPause أو onStop؟

اختر ملكية دورة الحياة استنادًا إلى بنية التطبيق وما إذا كان يمكن استمرار المسح عند حجبه جزئيًا. الشرط المهم هو مالك واحد، والتنظيف الحتمي والسلوك الذي تم اختباره.

هل يمكن استخدام هذه العينة على كل جهاز UROVO ؟

لا. إنه مخطط للتحقق من الصحة يعتمد على ScanManager v4.1.0326. قم بتجميعه وتشغيله على كل طراز ونظام تشغيل وبرامج ثابتة مقصودة قبل الإصدار.

الأدلة والقيود

SDK - عينة مدعومة بالمرجع / لم يتم التحقق من صحتها في كل تكوين مستهدف

الكود توضيحي ويستدعي عمدًا الثوابت الخاصة بالإصدار وسياسة جهاز الاستقبال Android للتحقق.

تمت المراجعة: 2026-08-10

سجل المصدر
  • UROVO Android SDK الإصدار 4.1.0326 مرجع ScanManager API
  • UROVO نموذج مشروع ScanManager في تصدير SDK المعتمد
  • Android وثائق دورة حياة التطبيق ومستقبل البث

تحويل هذا الدليل إلى قرار المشروع

طلب التحقق من صحة التطبيق

شارك النموذج والبرامج الثابتة وخط الأساس SDK وسير عمل المسح الضوئي. سيعمل RuggedLayer على نطاق خطة التحقق من صحة الجهاز القابل للتكرار.

طلب التحقق من صحة التطبيق