Android 6.0 以上版本支援透過藍牙 (BT)、藍牙低功耗 (BTLE) 或 USB 連線的藍牙觸控筆標準資料格式。平台會將觸控輸入與觸控筆資料的時間點連結,然後提供觸控筆資料,將 MotionEvents 算繪至有效應用程式。以下各節提供 OEM 裝置導入者、觸控筆配件建立者和觸控筆應用程式開發人員的規範。
原始設備製造商 (OEM) 裝置導入者指南
如要啟用藍牙觸控筆支援功能,原始設備製造商 (OEM) 裝置實作者必須支援藍牙 (並應支援 BTLE 以便提高相容性)。平台會處理資料收集、時間關聯,以及向應用程式轉譯支援的觸控筆事件。
在 14 以上版本中,StylusButtonInputEventTest
會模擬已連結觸控筆的行為,並測試按鈕事件是否正確回報。針對較舊版本,我們建議您建立可模擬觸控筆事件的觸控筆配件或模擬器,做為解決方法。
觸控筆配件製造商指南
如要在觸控筆裝置上實作支援功能,裝置實作者必須使用下方的觸控筆人機介面裝置 (HID) 描述元,說明如何呈現觸控筆資料 (壓力靈敏度、橡皮擦、按鈕、裝置 ID、電池電量、充電狀態等)。觸控筆裝置會將 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 開發人員說明文件。