Aguja

Android 6.0 y versiones posteriores admiten un formato de datos estándar para conexiones de lápiz óptico Bluetooth a través de Bluetooth (BT), Bluetooth Low Energy (BTLE) o USB. La plataforma correlaciona el tiempo entre la entrada táctil y los datos del lápiz y luego proporciona datos del lápiz para representar MotionEvents en la aplicación activa. Las siguientes secciones proporcionan pautas para implementadores de dispositivos OEM, creadores de accesorios de lápiz óptico y desarrolladores de aplicaciones de lápiz óptico.

Directrices para implementadores de dispositivos OEM

Para habilitar la compatibilidad con el lápiz óptico Bluetooth, los implementadores de dispositivos OEM deben admitir Bluetooth (y deben admitir BTLE para una compatibilidad más amplia). La plataforma maneja la recopilación de datos, la correlación de tiempos y la representación en la aplicación para eventos de lápiz compatibles.

En 14 y superiores, StylusButtonInputEventTest emula el comportamiento de un lápiz óptico conectado y prueba que los eventos de los botones se informen correctamente. Como solución alternativa para versiones anteriores, recomendamos crear un accesorio o emulador de lápiz óptico que pueda simular eventos de lápiz óptico.

Directrices para creadores de accesorios de lápiz óptico

Para implementar la compatibilidad con un dispositivo de lápiz, los implementadores del dispositivo deben utilizar el descriptor del dispositivo de interfaz humana (HID) de lápiz que se muestra a continuación para describir cómo se representan los datos del lápiz (sensibilidad a la presión, borrador, botones, ID del dispositivo, nivel de batería, estado de carga, etc.). . El dispositivo de lápiz envía la información 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 lápiz usando la clase MotionEvent . En Android 14 y versiones posteriores, presionar botones en el lápiz también genera eventos internos usando la clase KeyEvent . Los datos se pueden enviar a través de Bluetooth (BT), Bluetooth Low Energy (BTLE) o USB.

Ejemplo de descriptor HID

El siguiente descriptor HID de muestra informa el contacto de la punta, la presión, los botones primarios y secundarios, el borrador y el número de serie. El descriptor HID que incluya debe reflejar con precisión lo que informa el lápiz óptico 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
}

Directrices para desarrolladores de aplicaciones de lápiz óptico

La plataforma Android maneja automáticamente el emparejamiento y la correlación de eventos, por lo que tanto las aplicaciones nuevas como las existentes admiten el lápiz óptico Bluetooth de forma predeterminada. Para obtener más información sobre la compatibilidad con lápices ópticos en aplicaciones de Android, consulte la documentación para desarrolladores de Android .