Android نسخه 6.0 و بالاتر از یک قالب داده استاندارد برای اتصالات قلم بلوتوث از طریق بلوتوث (BT)، بلوتوث کم انرژی (BTLE) یا USB پشتیبانی می کند. این پلتفرم زمانبندی را بین ورودی لمسی و دادههای قلم مرتبط میکند و سپس دادههای قلم را برای ارائه MotionEvents به برنامه فعال ارائه میدهد. بخشهای زیر دستورالعملهایی را برای اجراکنندگان دستگاههای OEM، سازندگان لوازم جانبی قلم و توسعهدهندگان اپلیکیشنهای قلم ارائه میکنند.
دستورالعمل برای اجراکنندگان دستگاه های OEM
برای فعال کردن پشتیبانی از قلم بلوتوث، پیادهکنندههای دستگاه OEM باید از بلوتوث پشتیبانی کنند (و برای سازگاری گستردهتر باید از BTLE پشتیبانی کنند). این پلتفرم جمعآوری دادهها، همبستگی زمانبندی و ارائه به برنامه را برای رویدادهای قلم پشتیبانیشده مدیریت میکند.
در 14 و بالاتر، StylusButtonInputEventTest
رفتار یک قلم متصل را شبیهسازی میکند و آزمایش میکند که رویدادهای دکمه به درستی گزارش میشوند. به عنوان راهحلی برای نسخههای پایینتر، توصیه میکنیم یک لوازم جانبی قلم یا شبیهساز ایجاد کنید که بتواند رویدادهای قلم را شبیهسازی کند.
رهنمودهایی برای سازندگان لوازم جانبی قلم
برای اجرای پشتیبانی در دستگاه قلم، پیادهکنندههای دستگاه باید از توصیفگر دستگاه رابط انسانی Stylus (HID) که در زیر نشان داده شده است استفاده کنند تا نحوه نمایش دادههای قلم (حساسیت فشار، پاککن، دکمهها، شناسه دستگاه، سطح باتری، وضعیت شارژ و غیره) را توضیح دهد. . دستگاه قلم اطلاعات HID را به دستگاه تلفن همراه Android ارسال میکند و پلتفرم را قادر میسازد تا دادههای HID را با دادههای لمسی از صفحه لمسی برای تولید رویدادهای قلم با استفاده از کلاس MotionEvent
مرتبط کند. در اندروید 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 مراجعه کنید.