Caneta

O Android 6.0 e superior é compatível com um formato de dados padrão para conexões de caneta Bluetooth por Bluetooth (BT), Bluetooth Low Energy (BTLE) ou USB. A plataforma correlaciona o tempo entre a entrada de toque e os dados da caneta e, em seguida, fornece dados da caneta para renderizar MotionEvents para o aplicativo ativo. As seções a seguir fornecem diretrizes para implementadores de dispositivos OEM, criadores de acessórios de caneta e desenvolvedores de aplicativos de caneta.

Diretrizes para implementadores de dispositivos OEM

Para habilitar o suporte a caneta Bluetooth, os implementadores de dispositivos OEM devem oferecer suporte a Bluetooth (e devem oferecer suporte a BTLE para maior compatibilidade). A plataforma lida com coleta de dados, correlação de tempo e renderização para o aplicativo para eventos de caneta com suporte.

Neste momento, o Android CTS não inclui testes para garantir que as APIs existentes para eventos de toque sejam compatíveis com o comportamento padrão. Como solução alternativa, recomendamos criar um acessório ou emulador de caneta que possa simular eventos de caneta.

Diretrizes para criadores de acessórios de caneta

Para implementar o suporte em um dispositivo stylus, os implementadores de dispositivos devem usar o Descritor Stylus Human Interface Device (HID) mostrado abaixo para descrever como os dados da caneta (sensibilidade à pressão, borracha, botões laterais, ID do dispositivo etc.) são representados. O dispositivo stylus envia as informações HID para o dispositivo móvel Android, permitindo que a plataforma correlacione os dados HID com os dados de toque da tela sensível ao toque para produzir eventos da caneta via MotionEvent. Os dados podem ser enviados por Bluetooth (BT), Bluetooth Low Energy (BTLE) ou USB.

Descritor HID

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 aplicativos de caneta

A plataforma Android 6.0 lida automaticamente com o emparelhamento e a correlação de eventos, de modo que os aplicativos existentes e novos executados no Android 6.0 são compatíveis com a caneta Bluetooth por padrão. Para obter detalhes sobre APIs de caneta Bluetooth, consulte developer.android.com .