Pluma stylus

Android 6.0 y versiones posteriores admiten un formato de datos estándar para las conexiones de plumas stylus Bluetooth a través de Bluetooth (BT), Bluetooth de bajo consumo (BTLE) o USB. La plataforma correlaciona la sincronización entre la entrada táctil y los datos de la pluma stylus y, luego, proporciona datos de la pluma stylus para renderizar MotionEvents en la app activa. En las siguientes secciones, se proporcionan lineamientos para implementadores de dispositivos OEM, creadores de accesorios de plumas stylus y desarrolladores de apps de plumas stylus.

Lineamientos para implementadores de dispositivos OEM

Para habilitar la compatibilidad con la pluma stylus Bluetooth, los implementadores de dispositivos OEM deben admitir Bluetooth (y deberían admitir BTLE para una mayor compatibilidad). La plataforma controla la recopilación de datos, la correlación de sincronización y la renderización en la app para los eventos de pluma stylus compatibles.

En 14 y versiones posteriores, StylusButtonInputEventTest emula el comportamiento de una pluma stylus conectada y prueba que los eventos de botón se informen correctamente. Como solución alternativa para versiones anteriores, te recomendamos que crees un accesorio o emulador de pluma stylus que pueda simular eventos de pluma stylus.

Lineamientos para creadores de accesorios de plumas stylus

Para implementar la compatibilidad en un dispositivo de pluma stylus, los implementadores de dispositivos deben usar el descriptor de dispositivo de interfaz humana (HID) de la pluma stylus que se muestra a continuación para describir cómo se representan los datos de la pluma stylus (sensibilidad a la presión, borrador, botones, ID del dispositivo, nivel de batería, estado de carga, etcétera). El dispositivo de pluma stylus envía la información de HID al dispositivo móvil Android, lo que permite que la plataforma correlacione los datos de HID con los datos táctiles de la pantalla táctil para producir eventos de pluma stylus con la MotionEvent clase. En Android 14 y versiones posteriores, las presiones de botones en la pluma stylus también generan eventos internos con la KeyEvent clase. Los datos se pueden enviar a través de Bluetooth (BT), Bluetooth de bajo consumo (BTLE) o USB.

Ejemplo de descriptor de HID

El siguiente descriptor de HID de muestra informa el contacto de la punta, la presión, los botones primario y secundario, el borrador y el número de serie. El descriptor de HID que incluyas debe reflejar con precisión lo que informa la pluma stylus a través de Bluetooth, que podría ser cualquier subconjunto de las capacidades disponibles.
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
}

Lineamientos para desarrolladores de apps de plumas stylus

La plataforma de Android controla automáticamente el vinculación y la correlación de eventos, por lo que las apps existentes y nuevas admiten la pluma stylus Bluetooth de forma predeterminada. Para obtener más información sobre la compatibilidad con plumas stylus en apps para Android, consulta la documentación para desarrolladores de Android.