قلم الشاشة

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

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

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

في الإصدار 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 الأساسي تلقائيًا عملية الإقران وربط الأحداث، لذا تتيح التطبيقات الحالية والجديدة قلم البلوتوث تلقائيًا. لمزيد من المعلومات عن إتاحة استخدام الأقلام في تطبيقات Android، يُرجى الاطّلاع على مستندات مطوّري Android.