قلم الشاشة

يدعم Android 6.0 والإصدارات الأحدث تنسيق البيانات القياسي لاتصالات قلم Bluetooth عبر Bluetooth (BT)، أو Bluetooth Low Energy (BTLE)، أو USB. يقوم النظام الأساسي بربط التوقيت بين الإدخال باللمس وبيانات القلم ثم يوفر بيانات القلم لتقديم MotionEvents إلى التطبيق النشط. توفر الأقسام التالية إرشادات لمنفذي أجهزة OEM ومنشئي ملحقات القلم ومطوري تطبيقات القلم.

إرشادات لمنفذي أجهزة OEM

لتمكين دعم قلم Bluetooth، يجب أن يدعم منفذو أجهزة OEM تقنية Bluetooth (ويجب أن يدعموا BTLE لتحقيق توافق أوسع). يتعامل النظام الأساسي مع جمع البيانات وارتباط التوقيت والعرض على التطبيق لأحداث القلم المدعومة.

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

إرشادات لمنشئي ملحقات القلم

لتنفيذ الدعم على جهاز قلم، يجب على منفذي الجهاز استخدام واصف جهاز واجهة القلم البشرية (HID) الموضح أدناه لوصف كيفية تمثيل بيانات القلم (حساسية الضغط، الممحاة، الأزرار، معرف الجهاز، مستوى البطارية، حالة الشحن، وما إلى ذلك). . يرسل جهاز القلم معلومات HID إلى الجهاز المحمول الذي يعمل بنظام Android، مما يمكّن النظام الأساسي من ربط بيانات HID مع بيانات اللمس من شاشة اللمس لإنتاج أحداث القلم باستخدام فئة MotionEvent . في نظام التشغيل Android 14 والإصدارات الأحدث، يؤدي الضغط على الزر الموجود على القلم أيضًا إلى إنشاء أحداث داخلية باستخدام فئة KeyEvent . يمكن إرسال البيانات عبر البلوتوث (BT)، أو البلوتوث منخفض الطاقة (BTLE)، أو USB.

مثال لواصف HID

يوضح نموذج واصف HID التالي جهة اتصال الطرف والضغط والأزرار الأساسية والثانوية والممحاة والرقم التسلسلي. يجب أن يعكس واصف HID الذي تقوم بتضمينه بدقة ما يتم الإبلاغ عنه بواسطة القلم عبر البلوتوث، والذي يمكن أن يكون أي مجموعة فرعية من الإمكانات المتاحة.
UsagePage(Digitizer)
Usage(Pen)
Collection(Application)
    Usage(Stylus)
    Collection(Logical)
        Usage(Tip Pressure)
        Logical Minimum(0)
        Logical Maximum(1023)
        Report Count(1)
        Report Size(10)
        Input(Data, Variable, Absolute, No Null)

        Usage(Barrel Switch)
        Usage(Secondary Barrel Switch)
        Usage(Tip Switch)
        Usage(Invert)
        Logical Maximum(1)
        Report Count(4)
        Report Size(1)
        Input(Data, Variable, Absolute, No Null)

        Usage(Transducer Serial Number)
        Report Count(1)
        Report Size(128)
        Feature(Constant, Variable)
    EndCollection
EndCollection

unsigned char HID_DESC[] = {
    0x05, 0x0D, // UsagePage(Digitizer)
    0x09, 0x02, // Usage(Pen)
    0xA1, 0x01, // Collection(Application)
    0x09, 0x20, // Usage(Stylus)
    0xA1, 0x02, // Collection(Logical)
    0x09, 0x30, // Usage(Tip Pressure)
    0x15, 0x00, // Logical Minimum(0)
    0x26, 0xFF, 0x03, // Logical Maximum(1023)
    0x95, 0x01, // Report Count(1)
    0x75, 0x0A, // Report Size(10)
    0x81, 0x02, // Input(Data, Variable, Absolute, No Null)

    0x09, 0x44, // Usage(Barrel Switch)
    0x09, 0x5A, // Usage(Secondary Barrel Switch)
    0x09, 0x42, // Usage(Tip Switch)
    0x09, 0x3C, // Usage(Invert)
    0x25, 0x01, // Logical Maximum(1)
    0x95, 0x04, // Report Count(4)
    0x75, 0x01, // Report Size(1)
    0x81, 0x02, // Input(Data, Variable, Absolute, No Null)

    0x09, 0x5B, // Usage(Transducer Serial Number)
    0x95, 0x01, // Report Count(1)
    0x75, 0x80, // Report Size(128)
    0xB1, 0x03, // Feature(Constant, Variable)
    0xC0, // End Collection
    0xC0, // End Collection
}

إرشادات لمطوري تطبيقات القلم

يتعامل نظام Android الأساسي تلقائيًا مع الاقتران وارتباط الأحداث، لذا تدعم كل من التطبيقات الحالية والجديدة قلم Bluetooth افتراضيًا. لمعرفة المزيد حول دعم أقلام الرصاص في تطبيقات Android، راجع وثائق Android Developer .