סטיילוס

ב-Android מגרסה 6.0 ואילך יש תמיכה בפורמט נתונים סטנדרטי לחיבורי עט Bluetooth דרך Bluetooth‏ (BT), Bluetooth Low Energy‏ (BTLE) או USB. הפלטפורמה מתאימה את התזמון בין קלט המגע לנתוני העט, ולאחר מכן מספקת את נתוני העט כדי להציג את האירועים של MotionEvents באפליקציה הפעילה. בקטעים הבאים מפורטות הנחיות למטמיעים של מכשירים של יצרני ציוד מקורי, ליוצרים של אביזרי עט ולמפתחי אפליקציות לעט.

הנחיות למטמיעים של מכשירים של יצרני ציוד מקורי

כדי להפעיל תמיכה בסטיילוס Bluetooth, מטמיעי מכשירים של OEM (יצרן ציוד מקורי) צריכים לתמוך ב-Bluetooth (וצריכים לתמוך ב-BTLE לתאימות רחבה יותר). הפלטפורמה מטפלת באיסוף הנתונים, בקורלציה של התזמון ובעיבוד הנתונים באפליקציה עבור אירועי עט מגע נתמכים.

בגרסה 14 ואילך, StylusButtonInputEventTest אמול את ההתנהגות של סטיילוס מחובר ובודק אם אירועי הלחצן מדווחים בצורה נכונה. כפתרון זמני לגרסאות ישנות יותר, מומלץ ליצור אביזר או אמולטור של עט stylus שיכול לדמות אירועים של עט stylus.

הנחיות ליוצרים של אביזרי עט

כדי להטמיע תמיכה במכשיר סטיילוס, מפתחי המכשיר צריכים להשתמש בתיאור של מכשיר ה-Stylus לממשק משתמש (HID) שמוצג בהמשך, כדי לתאר את האופן שבו מיוצגים נתוני הסטיילוס (רגישות ללחץ, מחק, לחצנים, מזהה מכשיר, רמת סוללה, סטטוס טעינה וכו'). מכשיר הסtylus שולח את פרטי ה-HID למכשיר הנייד עם Android, ומאפשר לפלטפורמה לשייך נתוני HID לנתוני מגע מהמסך המגע כדי ליצור אירועי סtylus באמצעות הכיתה MotionEvent. ב-Android 14 ואילך, לחיצות על הלחצנים בעט הדיגיטלי יוצרות גם אירועים פנימיים באמצעות הכיתה KeyEvent. אפשר לשלוח נתונים באמצעות Bluetooth‏ (BT),‏ Bluetooth עם צריכת אנרגיה נמוכה (BTLE) או USB.

דוגמה למתואר HID

בתיאור ה-HID לדוגמה הבא מדווחים על מגע קצה, לחץ, לחצנים ראשיים ומשניים, מחיקה ומספר סידורי. מתאר ה-HID שצריך לכלול צריך לשקף במדויק את מה שמדווח על ידי העט הדיגיטלי דרך Bluetooth, ויכול להיות כל קבוצת משנה של היכולות הזמינות.
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.