Stylet

Android 6.0 et versions ultérieures sont compatibles avec un format de données standard pour les connexions de stylet Bluetooth (BT), Bluetooth à basse consommation (BTLE) ou USB. La plate-forme met en corrélation la synchronisation entre les entrées tactiles et les données du stylet, puis fournit les données du stylet pour afficher les MotionEvents dans l'application active. Les sections suivantes fournissent des consignes pour les implémenteurs d'appareils OEM, les créateurs d'accessoires de stylet et les développeurs d'applications de stylet.

Consignes pour les implémenteurs d'appareils OEM

Pour activer la prise en charge du stylet Bluetooth, les implémenteurs d'appareils OEM doivent être compatibles avec le Bluetooth (et devraient être compatibles avec le BTLE pour une compatibilité plus large). La plate-forme gère la collecte de données, la corrélation de la synchronisation et le rendu dans l'application pour les événements de stylet compatibles.

Dans la version 14 et les versions ultérieures, StylusButtonInputEventTest émule le comportement d'un stylet connecté et teste que les événements de bouton sont correctement signalés. Pour contourner ce problème dans les versions antérieures, nous vous recommandons de créer un accessoire ou un émulateur de stylet capable de simuler des événements de stylet.

Consignes pour les créateurs d'accessoires de stylet

Pour implémenter la prise en charge sur un appareil de stylet, les implémenteurs d'appareils doivent utiliser le descripteur d'appareil d'interface humaine (HID) de stylet présenté ci-dessous pour décrire la façon dont les données du stylet (sensibilité à la pression, gomme, boutons, ID de l'appareil, niveau de batterie, état de charge, etc.) sont représentées. L'appareil de stylet envoie les informations HID à l'appareil mobile Android, ce qui permet à la plate-forme de corréler les données HID avec les données tactiles de l'écran tactile pour produire des événements de stylet à l'aide de la MotionEvent classe. Dans Android 14 et versions ultérieures, les appuis sur les boutons du stylet génèrent également des événements internes à l'aide de la KeyEvent classe. Les données peuvent être envoyées via Bluetooth (BT), Bluetooth à basse consommation (BTLE) ou USB.

Exemple de descripteur HID

L'exemple de descripteur HID suivant signale le contact de la pointe, la pression, les boutons principal et secondaire, la gomme et le numéro de série. Le descripteur HID que vous incluez doit refléter avec précision ce qui est signalé par le stylet via Bluetooth, qui peut être n'importe quel sous-ensemble des fonctionnalités 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
}

Consignes pour les développeurs d'applications de stylet

La plate-forme Android gère automatiquement l'association et la corrélation des événements. Par conséquent, les applications existantes et nouvelles sont compatibles avec le stylet Bluetooth par défaut. Pour en savoir plus sur la prise en charge des stylets dans les applications Android, consultez la documentation Android pour les développeurs.