Stylus

O Android 6.0 e versões mais recentes oferecem suporte a um formato de dados padrão para o Bluetooth Stylus conexões por Bluetooth (BT), Bluetooth de baixa energia (BTLE) ou USB. O correlaciona o tempo entre a entrada por toque e os dados da stylus e fornece Dados da stylus para renderizar MotionEvents no app ativo. O seguinte fornecem diretrizes para implementadores de dispositivos OEM, criadores de acessórios da stylus e desenvolvedores de apps com stylus.

Diretrizes para implementadores de dispositivos OEM

Para ativar o suporte à stylus Bluetooth, os implementadores de dispositivos OEM precisam oferecer suporte ao Bluetooth e ao BTLE para uma compatibilidade mais ampla. A plataforma processa a coleta de dados, a correlação de tempo e a renderização no app para eventos de stylus compatíveis.

No Android 14 e versões mais recentes, StylusButtonInputEventTest emula o comportamento de uma stylus conectada e testa se os eventos do botão são informados corretamente. Como alternativa para versões anteriores, recomendamos criar um emulador ou acessório da stylus que possa para simular eventos da stylus.

Diretrizes para criadores de acessórios de stylus

Para implementar o suporte em um dispositivo de stylus, os implementadores de dispositivos precisam usar o descritor de dispositivo de interface humana (HID, na sigla em inglês) de stylus mostrado abaixo para descrever como os dados da stylus (sensibilidade à pressão, borracha, botões, ID do dispositivo, nível da bateria, status de carregamento etc.) são representados. A stylus envia as informações do HID para o dispositivo móvel Android. permitindo que a plataforma correlacione dados de HID com dados de toque da tela touch para produzir eventos da stylus usando o MotionEvent . No Android 14 e versões mais recentes, as pressões de botão na stylus também geram eventos internos usando a classe KeyEvent. Os dados podem ser enviados por Bluetooth (BT), Bluetooth de baixa energia (BTLE) ou USB.

Exemplo de descritor HID

O descritor de HID de exemplo a seguir informa o contato da ponta, a pressão, os botões primário e secundário, a borracha e o número de série. O descritor HID incluído deve refletir com precisão o que está sendo relatado pela stylus por Bluetooth, que pode ser qualquer subconjunto dos recursos disponíveis.
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
}

Diretrizes para desenvolvedores de apps com stylus

A plataforma Android processa automaticamente o pareamento e a correlação de eventos. Portanto, os apps novos e atuais oferecem suporte à stylus Bluetooth por padrão. Para saber mais sobre com suporte a stylus em apps Android, consulte a Documentação do desenvolvedor Android.