Rysik

Android 6.0 i nowsze wersje obsługują standardowy format danych dla połączeń rysika Bluetooth przez Bluetooth (BT), Bluetooth Low Energy (BTLE) lub USB. platforma koreluje czas przesyłania danych dotykowych z danymi rysika, dane rysika, aby renderować MotionEvents w aktywnej aplikacji. Poniżej w sekcjach znajdują się wskazówki dla deweloperów urządzeń OEM i twórców akcesoriów do rysika. deweloperów aplikacji rysika.

Wytyczne dla firm wdrażających urządzenia OEM

Aby włączyć obsługę rysika Bluetooth, firmy wdrażające urządzenia OEM muszą obsługiwać Bluetooth (i powinna obsługiwać BTLE w celu zwiększenia zgodności). Platforma obsługuje zbieranie danych, korelację czasu i renderowanie do aplikacji w przypadku obsługiwanych zdarzeń rysika.

W Androidzie 14 i nowszych StylusButtonInputEventTest emuluje działanie podłączonego rysika i sprawdza, czy zdarzenia przycisku są zgłaszane prawidłowo. Aby obejść ten problem w starszych wersjach, zalecamy utworzenie akcesorium lub emulatora rysika, który będzie symulował zdarzenia rysika.

Wskazówki dla twórców akcesoriów do piór

Aby wdrożyć obsługę urządzenia z rysikiem, implementatorzy muszą użyć opisanego poniżej opisu urządzenia z interfejsem dla użytkownika (HID), aby opisać sposób, w jaki dane rysika (czułość na nacisk, gumka, przyciski, identyfikator urządzenia, poziom naładowania baterii, stan ładowania itp.) są reprezentowane. Pióro przesyła informacje HID do urządzenia mobilnego z Androidem, co umożliwia platformie powiązanie danych HID z danymi dotykowymi z ekranu dotykowego, aby generować zdarzenia związane z piórem za pomocą klasy MotionEvent. W Androidzie 14 i nowszych naciśnięcie przycisku na rysikiem powoduje też wygenerowanie wewnętrznych zdarzeń za pomocą klasy KeyEvent. Dane mogą być wysyłane przez Bluetooth (BT), Bluetooth Low Energy (BTLE) lub przez USB.

Przykładowy deskryptor HID

Ten przykładowy deskryptor HID podaje kontakt końcówki, nacisk, przycisk główny i przycisk dodatkowy gumki i numeru seryjnego. Podany przez Ciebie identyfikator HID powinien dokładnie odzwierciedlać to, co jest zgłaszane przez pióro za pomocą Bluetooth. Może to być dowolna podgrupa dostępnych funkcji.
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
}

Wytyczne dla deweloperów aplikacji na rysik

Platforma Android automatycznie obsługuje parowanie i korelację zdarzeń, więc zarówno istniejące, jak i nowe aplikacje domyślnie obsługują pióro Bluetooth. Więcej informacji o obsługiwaniu rysika w aplikacjach na Androida znajdziesz w dokumentacji dla deweloperów Androida.