از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
قلم
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
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 مراجعه کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Stylus\n\nAndroid 6.0 and higher supports a standard data format for Bluetooth stylus\nconnections over Bluetooth (BT), Bluetooth Low Energy (BTLE), or USB. The\nplatform correlates timing between touch input and stylus data then provides\nstylus data to render MotionEvents to the active app. The following\nsections provide guidelines for OEM device implementers, stylus accessory creators, and\nstylus app developers.\n\nGuidelines for OEM device implementers\n--------------------------------------\n\nTo enable Bluetooth stylus support, OEM device implementers must support Bluetooth\n(and should support BTLE for wider compatibility). The platform handles data\ncollection, timing correlation, and rendering to the app for supported\nstylus events.\n\nIn 14 and higher,\n`StylusButtonInputEventTest` emulates the behavior of a connected stylus and tests\nthat button events are reported correctly. As a\nworkaround for lower versions, we recommend creating a stylus accessory or emulator that can\nsimulate stylus events.\n\nGuidelines for stylus accessory creators\n----------------------------------------\n\nTo implement support on a stylus device, device implementers must use the Stylus\nHuman Interface Device (HID) Descriptor shown below to describe how stylus data\n(pressure sensitivity, eraser, buttons, device ID, battery level, charging status, etc.) is\nrepresented. The stylus device sends the HID information to the Android mobile device,\nenabling the platform to correlate HID data with touch data from the touchscreen\nto produce stylus events using the\n[`MotionEvent`](//developer.android.com/reference/android/view/MotionEvent)\nclass. In Android 14 and higher, button presses on the stylus also generate\ninternal events using the\n[`KeyEvent`](//developer.android.com/reference/android/view/KeyEvent) class.\nData can be sent over Bluetooth (BT), Bluetooth Low Energy (BTLE), or USB.\n\n### Example HID descriptor\n\nThe following sample HID descriptor reports tip contact, pressure, primary and secondary buttons, eraser, and serial number. The HID descriptor you include should accurately reflect what is being reported by the stylus through bluetooth, which could be any subset of the available capabilities. \n\n```\nUsagePage(Digitizer)\nUsage(Pen)\nCollection(Application)\n Usage(Stylus)\n Collection(Logical)\n Usage(Tip Pressure)\n Logical Minimum(0)\n Logical Maximum(1023)\n Report Count(1)\n Report Size(10)\n Input(Data, Variable, Absolute, No Null)\n\n Usage(Barrel Switch)\n Usage(Secondary Barrel Switch)\n Usage(Tip Switch)\n Usage(Invert)\n Logical Maximum(1)\n Report Count(4)\n Report Size(1)\n Input(Data, Variable, Absolute, No Null)\n\n Usage(Transducer Serial Number)\n Report Count(1)\n Report Size(128)\n Feature(Constant, Variable)\n EndCollection\nEndCollection\n\nunsigned char HID_DESC[] = {\n 0x05, 0x0D, // UsagePage(Digitizer)\n 0x09, 0x02, // Usage(Pen)\n 0xA1, 0x01, // Collection(Application)\n 0x09, 0x20, // Usage(Stylus)\n 0xA1, 0x02, // Collection(Logical)\n 0x09, 0x30, // Usage(Tip Pressure)\n 0x15, 0x00, // Logical Minimum(0)\n 0x26, 0xFF, 0x03, // Logical Maximum(1023)\n 0x95, 0x01, // Report Count(1)\n 0x75, 0x0A, // Report Size(10)\n 0x81, 0x02, // Input(Data, Variable, Absolute, No Null)\n\n 0x09, 0x44, // Usage(Barrel Switch)\n 0x09, 0x5A, // Usage(Secondary Barrel Switch)\n 0x09, 0x42, // Usage(Tip Switch)\n 0x09, 0x3C, // Usage(Invert)\n 0x25, 0x01, // Logical Maximum(1)\n 0x95, 0x04, // Report Count(4)\n 0x75, 0x01, // Report Size(1)\n 0x81, 0x02, // Input(Data, Variable, Absolute, No Null)\n\n 0x09, 0x5B, // Usage(Transducer Serial Number)\n 0x95, 0x01, // Report Count(1)\n 0x75, 0x80, // Report Size(128)\n 0xB1, 0x03, // Feature(Constant, Variable)\n 0xC0, // End Collection\n 0xC0, // End Collection\n}\n```\n\nGuidelines for stylus app developers\n------------------------------------\n\nThe Android platform automatically handles pairing and event correlation,\nso both existing and new apps support Bluetooth stylus by default. To learn more about\nsupporting styluses in Android apps, see the\n[Android Developer documentation](https://developer.android.com/develop/ui/views/touch-and-input/stylus)."]]