Android 6.0 และสูงกว่ารองรับรูปแบบข้อมูลมาตรฐานสำหรับการเชื่อมต่อบลูทูธสไตลัสผ่าน Bluetooth (BT), Bluetooth Low Energy (BTLE) หรือ USB แพลตฟอร์มนี้เชื่อมโยงเวลาระหว่างอินพุตแบบสัมผัสและข้อมูลสไตลัส จากนั้นให้ข้อมูลสไตลัสเพื่อเรนเดอร์ MotionEvents ให้กับแอปที่ใช้งานอยู่ ส่วนต่อไปนี้เป็นแนวทางสำหรับผู้ใช้อุปกรณ์ OEM ผู้สร้างอุปกรณ์เสริมสไตลัส และนักพัฒนาแอปสไตลัส
แนวทางปฏิบัติสำหรับผู้ใช้อุปกรณ์ OEM
หากต้องการเปิดใช้งานการรองรับสไตลัส Bluetooth ผู้ใช้อุปกรณ์ OEM จะต้องรองรับ Bluetooth (และควรรองรับ BTLE เพื่อความเข้ากันได้ที่กว้างขึ้น) แพลตฟอร์มจะจัดการกับการรวบรวมข้อมูล ความสัมพันธ์ของเวลา และการเรนเดอร์ไปยังแอปสำหรับกิจกรรมสไตลัสที่รองรับ
ในเวอร์ชัน 14 และสูงกว่านั้น StylusButtonInputEventTest
จะจำลองพฤติกรรมของสไตลัสที่เชื่อมต่ออยู่ และทดสอบว่าเหตุการณ์ของปุ่มได้รับการรายงานอย่างถูกต้อง เพื่อเป็นวิธีแก้ปัญหาสำหรับเวอร์ชันต่ำกว่า เราขอแนะนำให้สร้างอุปกรณ์เสริมหรือโปรแกรมจำลองสไตลัสที่สามารถจำลองเหตุการณ์ของสไตลัสได้
คำแนะนำสำหรับผู้สร้างอุปกรณ์เสริมสไตลัส
หากต้องการใช้การสนับสนุนบนอุปกรณ์สไตลัส ผู้ใช้อุปกรณ์ต้องใช้ตัวอธิบายอุปกรณ์อินเทอร์เฟซของมนุษย์ (HID) ของสไตลัสที่แสดงด้านล่างเพื่ออธิบายวิธีการแสดงข้อมูลของสไตลัส (ความไวต่อแรงกด ยางลบ ปุ่ม รหัสอุปกรณ์ ระดับแบตเตอรี่ สถานะการชาร์จ ฯลฯ) . อุปกรณ์สไตลัสส่งข้อมูล HID ไปยังอุปกรณ์เคลื่อนที่ Android ทำให้แพลตฟอร์มสามารถเชื่อมโยงข้อมูล HID กับข้อมูลการสัมผัสจากหน้าจอสัมผัสเพื่อสร้างกิจกรรมสไตลัสโดยใช้คลาส MotionEvent
ใน Android 14 ขึ้นไป การกดปุ่มบนสไตลัสจะสร้างเหตุการณ์ภายในโดยใช้คลาส KeyEvent
เช่นกัน สามารถส่งข้อมูลผ่าน Bluetooth (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 จะจัดการการจับคู่และความสัมพันธ์ของเหตุการณ์โดยอัตโนมัติ ดังนั้นทั้งแอปที่มีอยู่และแอปใหม่จึงรองรับสไตลัส Bluetooth ตามค่าเริ่มต้น หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการรองรับสไตลัสในแอป Android โปรดดู เอกสารสำหรับนักพัฒนา Android