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, 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 tiempo y la representación en la aplicación para los eventos de lápiz compatibles.

En este momento, Android CTS no incluye pruebas para garantizar que las API existentes para eventos táctiles admitan el comportamiento predeterminado. Como solución alternativa, recomendamos crear un accesorio de lápiz óptico o un emulador que pueda simular eventos de lápiz óptico.

Directrices para los creadores de accesorios de stylus

Para implementar la compatibilidad con un dispositivo de lápiz, los implementadores del dispositivo deben usar el descriptor de 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 laterales, ID del dispositivo, etc.). El dispositivo stylus envía la información HID al dispositivo móvil Android, lo que permite que la plataforma correlacione los datos HID con los datos táctiles de la pantalla táctil para producir eventos stylus a través de MotionEvent. Los datos se pueden enviar a través de Bluetooth (BT), Bluetooth Low Energy (BTLE) o USB.

descriptor 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
}

Directrices para desarrolladores de aplicaciones de lápiz óptico

La plataforma Android 6.0 maneja automáticamente el emparejamiento y la correlación de eventos, por lo que tanto las aplicaciones existentes como las nuevas que se ejecutan en Android 6.0 admiten el lápiz óptico Bluetooth de manera predeterminada. Para obtener más información sobre las API del lápiz óptico Bluetooth, consulte developer.android.com .