สไตลัส

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