قلم الشاشة

يتوافق الإصدار 6.0 من نظام التشغيل Android والإصدارات الأحدث مع تنسيق بيانات عادي لاتصالات قلم البلوتوث عبر البلوتوث (BT) أو البلوتوث المنخفض الطاقة (BTLE) أو USB. تربط المنصة التوقيت بين إدخال اللمس وبيانات القلم، ثم توفّر بيانات القلم لعرض MotionEvents في التطبيق النشط. تقدّم الأقسام التالية إرشادات لمصنّعي الأجهزة الأصلية ومصنّعي ملحقات القلم ومطوّري تطبيقات القلم.

إرشادات لمصنّعي الأجهزة الأصلية

لتفعيل إمكانية استخدام قلم بلوتوث، على مصنّعي الأجهزة الأصلية توفير إمكانية استخدام البلوتوث (ويجب توفير إمكانية استخدام البلوتوث المنخفض الطاقة لتحقيق توافق أوسع). يتولّى النظام الأساسي معالجة جمع البيانات وربط التوقيتات وعرضها في التطبيق لأحداث القلم المتوافق.

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

إرشادات لصنّاع ملحقات القلم الإلكتروني

لتوفير إمكانية استخدام قلم الشاشة على أحد الأجهزة، على مطوّري الأجهزة استخدام وصف جهاز واجهة المستخدم (HID) الخاص بقلم الشاشة الموضّح أدناه لتوضيح كيفية عرض بيانات قلم الشاشة (حساسية الضغط والممحاة والأزرار ومعرّف الجهاز ومستوى البطارية وحالة الشحن وما إلى ذلك). يرسل جهاز القلم معلومات HID إلى جهاز Android الجوّال، ما يتيح للنظام الأساسي ربط بيانات HID ببيانات اللمس من الشاشة التي تعمل باللمس لإنشاء أحداث القلم باستخدام فئة MotionEvent. في الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث، تؤدي الضغطات على أزرار قلم الشاشة أيضًا إلى إنشاء أحداث داخلية باستخدام الفئة 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 تلقائيًا مع عملية الإقران وربط الأحداث، لذا تتوافق التطبيقات الحالية والجديدة مع قلم البلوتوث تلقائيًا. لمزيد من المعلومات حول إتاحة استخدام الأقلام في تطبيقات Android، يُرجى الاطّلاع على مستندات مطوّري تطبيقات Android.