Rysik

Android 6.0 i nowsze wersje obsługują standardowy format danych w przypadku połączeń rysika Bluetooth przez Bluetooth (BT), Bluetooth Low Energy (BTLE) lub USB. Platforma koreluje czas między danymi wejściowymi dotyku a danymi rysika, a następnie przekazuje dane rysika, aby renderować MotionEventy w aktywnej aplikacji. W kolejnych sekcjach znajdziesz wytyczne dla producentów urządzeń OEM, twórców akcesoriów do rysików i deweloperów aplikacji do rysików.

Wskazówki dla osób 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, aby zapewnić szerszą kompatybilność). Platforma obsługuje zbieranie danych, korelację czasową i renderowanie w aplikacji w przypadku obsługiwanych zdarzeń związanych z rysikiem.

W wersji 14 i nowszychStylusButtonInputEventTest emuluje działanie podłączonego rysika i sprawdza, czy zdarzenia przycisków są zgłaszane prawidłowo. W przypadku starszych wersji zalecamy utworzenie akcesorium w postaci rysika lub emulatora, który może symulować zdarzenia rysika.

Wskazówki dla twórców akcesoriów w postaci rysików

Aby wdrożyć obsługę na urządzeniu z rysikiem, producenci urządzeń muszą użyć deskryptora urządzenia interfejsu HID (Human Interface Device) Stylus pokazanego poniżej, aby opisać, jak są reprezentowane dane rysika (czułość na nacisk, gumka, przyciski, identyfikator urządzenia, poziom baterii, stan ładowania itp.). Urządzenie typu stylus wysyła informacje HID do urządzenia mobilnego z Androidem, co umożliwia platformie powiązanie danych HID z danymi dotykowymi z ekranu dotykowego w celu generowania zdarzeń związanych z rysikiem za pomocą klasy MotionEvent. W Androidzie 14 i nowszych wersjach naciśnięcia przycisków na rysiku generują też zdarzenia wewnętrzne za pomocą 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 zawiera informacje o kontakcie z końcówką, nacisku, przyciskach 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 być dowolnym podzbiorem 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
}

Wskazówki 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ą rysik Bluetooth. Więcej informacji o obsłudze rysików w aplikacjach na Androida znajdziesz w dokumentacji dla deweloperów Androida.