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 producentów urządzeń OEM

Aby włączyć obsługę rysika Bluetooth, producenci urządzeń OEM muszą obsługiwać Bluetooth (i powinni obsługiwać BTLE, aby zapewnić większą kompatybilność). Platforma obsługuje zbieranie danych, korelację czasową i renderowanie w aplikacji w przypadku obsługiwanych zdarzeń związanych z rysikiem.

W przypadku wersji 14 i nowszych funkcja StylusButtonInputEventTest 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ć poniższego deskryptora urządzenia interfejsu HID (Human Interface Device) Stylus, aby opisać sposób reprezentowania danych rysika (czułość na nacisk, gumka, przyciski, identyfikator urządzenia, poziom baterii, stan ładowania itp.). Rysik 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ń rysika 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, czyli dowolny podzbiór 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.