قلم الشاشة

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

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

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

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

إرشادات لصنّاع ملحقات قلم الشاشة

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