สไตลัส

Android 6.0 ขึ้นไปรองรับรูปแบบข้อมูลมาตรฐานสำหรับการเชื่อมต่อสไตลัสบลูทูธผ่านบลูทูธ (BT), บลูทูธพลังงานต่ำ (BTLE) หรือ USB แพลตฟอร์มจะสัมพันธ์กับช่วงเวลาระหว่างการป้อนข้อมูลด้วยการสัมผัสกับข้อมูลของสไตลัส ข้อมูลสไตลัสเพื่อแสดงผล MotionEvents ไปยังแอปที่ใช้งานอยู่ ดังต่อไปนี้ ส่วนต่างๆ มีหลักเกณฑ์สำหรับผู้ใช้อุปกรณ์ OEM ผู้สร้างอุปกรณ์เสริมสไตลัส และ สำหรับนักพัฒนาแอปสไตลัส

หลักเกณฑ์สำหรับผู้ติดตั้งใช้งานอุปกรณ์ OEM

หากต้องการเปิดใช้การรองรับสไตลัสบลูทูธ ผู้ติดตั้งใช้งานอุปกรณ์ OEM ต้องรองรับบลูทูธ (และควรรองรับ BTLE เพื่อความเข้ากันได้ที่กว้างขึ้น) แพลตฟอร์มจะจัดการการเก็บรวบรวมข้อมูล การเชื่อมโยงเวลา และการเรนเดอร์ไปยังแอปสําหรับเหตุการณ์ปากกาสไตลัสที่รองรับ

ในเวอร์ชัน 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