Rysik

Android 6.0 i nowsze obsługują standardowy format danych dla połączeń rysika Bluetooth przez Bluetooth (BT), Bluetooth Low Energy (BTLE) lub USB. Platforma koreluje czas między wprowadzaniem danych dotykowych a danymi rysika, a następnie dostarcza dane rysika w celu renderowania MotionEvents w aktywnej aplikacji. Poniższe sekcje zawierają wskazówki dla osób wdrażających urządzenia OEM, twórców akcesoriów do rysików i twórców aplikacji do rysików.

Wytyczne dla wdrażających urządzenia OEM

Aby włączyć obsługę rysika Bluetooth, producenci urządzeń OEM muszą obsługiwać Bluetooth (i powinni obsługiwać BTLE w celu zapewnienia szerszej kompatybilności). Platforma obsługuje gromadzenie danych, korelację taktowania i renderowanie w aplikacji obsługiwanych zdarzeń rysika.

W wersji 14 i nowszych StylusButtonInputEventTest emuluje zachowanie podłączonego rysika i sprawdza, czy zdarzenia przycisków są poprawnie zgłaszane. Jako obejście dla niższych wersji zalecamy utworzenie akcesorium lub emulatora rysika, który może symulować zdarzenia związane z rysikiem.

Wytyczne dla twórców akcesoriów do rysików

Aby zaimplementować obsługę rysika, osoby wdrażające urządzenia muszą użyć deskryptora urządzenia interfejsu ludzkiego Stylus (HID) pokazanego poniżej, aby opisać, w jaki sposób dane rysika (czułość nacisku, gumka, przyciski, identyfikator urządzenia, poziom naładowania baterii, stan ładowania itp.) są reprezentowane . Urządzenie rysikowe wysyła informacje HID do urządzenia mobilnego z systemem Android, umożliwiając platformie korelację danych HID z danymi dotykowymi z ekranu dotykowego w celu generowania zdarzeń rysika przy użyciu klasy MotionEvent . W systemie Android 14 i nowszych naciśnięcia przycisków na rysiku generują również zdarzenia wewnętrzne przy użyciu klasy KeyEvent . Dane można przesyłać przez Bluetooth (BT), Bluetooth Low Energy (BTLE) lub USB.

Przykładowy deskryptor HID

Poniższy przykładowy deskryptor HID informuje o kontakcie końcówki, nacisku, przycisku głównym i dodatkowym, gumce i numerze seryjnym. Dołączony deskryptor HID powinien dokładnie odzwierciedlać to, co jest zgłaszane przez rysik przez Bluetooth, co może stanowić dowolny podzbiór dostępnych możliwości.
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 twórców aplikacji rysikowych

Platforma Android automatycznie obsługuje parowanie i korelację zdarzeń, dlatego zarówno istniejące, jak i nowe aplikacje domyślnie obsługują rysik Bluetooth. Aby dowiedzieć się więcej o obsłudze rysików w aplikacjach na Androida, zapoznaj się z dokumentacją dla programistów Androida .