스타일러스

Android 6.0 이상에서는 블루투스(BT), 저전력 블루투스(BTLE) 또는 USB를 통한 블루투스 스타일러스 연결을 위해 표준 데이터 형식을 지원합니다. 플랫폼은 터치 입력과 스타일러스 데이터 사이의 타이밍을 연관시키고 스타일러스 데이터를 제공하여 MotionEvents를 활성 애플리케이션에 렌더링합니다. 다음 섹션에서는 OEM 기기 구현자, 스타일러스 액세서리 제작자 및 스타일러스 애플리케이션 개발자를 위한 가이드라인을 제공합니다.

OEM 기기 구현자 가이드라인

블루투스 스타일러스 지원을 사용하려면 OEM 기기 구현자가 블루투스를 지원해야 하며 더 넓은 호환성을 위해 BTLE를 지원해야 합니다. 플랫폼은 지원되는 스타일러스 이벤트에 대한 데이터 수집, 타이밍 상관관계 분석, 애플리케이션 렌더링을 처리합니다.

현재 Android CTS에는 터치 이벤트용 기존 API가 기본 동작을 지원하도록 하는 테스트가 포함되어 있지 않습니다. 이 문제를 해결하려면 스타일러스 이벤트를 시뮬레이션할 수 있는 스타일러스 액세서리나 에뮬레이터를 만드는 것이 좋습니다.

스타일러스 액세서리 제작자를 위한 가이드라인

스타일러스 기기에서 지원을 구현하려면 기기 구현자는 아래에 나와 있는 인간 인터페이스 기기(HID) 설명자를 사용하여 스타일러스 데이터(압력 감도, 지우개, 사이드 버튼, 기기 ID 등)가 나타나는 방식을 설명해야 합니다. 스타일러스 기기는 HID 정보를 Android 휴대 기기로 전송하고, HID 데이터와 터치스크린의 터치 데이터 간의 상관관계를 지정하여 MotionEvent를 통해 스타일러스 이벤트를 생성합니다. 블루투스(BT), 저전력 블루투스(BTLE) 또는 USB를 통해 데이터를 전송할 수 있습니다.

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 6.0 플랫폼은 페어링 및 이벤트 상관관계를 자동으로 처리하므로 Android 6.0에서 실행되는 기존 애플리케이션과 새 애플리케이션은 기본적으로 블루투스 스타일러스를 지원합니다. 블루투스 스타일러스 API에 관한 자세한 내용은 developer.android.com을 참조하세요.