Stylus

O Android 6.0 e versões mais recentes oferecem suporte a um formato de dados padrão para conexões de stylus Bluetooth (BT), Bluetooth de baixa energia (BTLE) ou USB. A plataforma correlaciona o tempo entre a entrada de toque e os dados da stylus e, em seguida, fornece dados da stylus para renderizar MotionEvents no app ativo. As seções a seguir oferecem diretrizes para implementadores de dispositivos OEM, criadores de acessórios de stylus e desenvolvedores de apps de 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 maior compatibilidade). A plataforma processa a coleta de dados, a correlação de tempo e a renderização para o app de 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 de botão são informados corretamente. Como solução alternativa para versões mais antigas, recomendamos criar um acessório ou emulador de stylus que possa simular eventos de 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) da 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. O dispositivo de stylus envia as informações de HID para o dispositivo móvel Android, permitindo que a plataforma correlacione os dados de HID com os dados de toque da tela sensível ao toque para produzir eventos de stylus usando a MotionEvent classe. No Android 14 e versões mais recentes, as pressionamentos de botões na stylus também geram eventos internos usando a KeyEvent classe. Os dados podem ser enviados por Bluetooth (BT), Bluetooth de baixa energia (BTLE) ou USB.

Exemplo de descritor HID

O exemplo de descritor HID 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 precisa refletir com precisão o que está sendo informado pela stylus via 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 de stylus

A plataforma Android processa automaticamente o pareamento e a correlação de eventos. Portanto, os apps atuais e novos oferecem suporte à stylus Bluetooth por padrão. Para saber mais sobre como oferecer suporte a stylus em apps Android, consulte a documentação para desenvolvedores Android.