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