Stylet

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

Consignes pour les implémentateurs d'appareils OEM

Pour activer la prise en charge du stylet Bluetooth, les implémentateurs d'appareils OEM doivent être compatibles avec le Bluetooth (et doivent prendre en charge le BTLE pour une compatibilité plus large). La plate-forme gère la collecte de données, la corrélation temporelle 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 vérifie que les événements de bouton sont correctement signalés. Pour contourner ce problème, nous vous recommandons de créer un accessoire de stylet ou un émulateur pouvant simuler des événements de stylet.

Consignes pour les créateurs d'accessoires pour stylet

Pour implémenter la prise en charge d'un stylet, les implémentateurs d'appareils doivent utiliser le descripteur HID (Human Interface Device) de stylet illustré ci-dessous pour décrire la représentation des données du stylet (sensibilité à la pression, gomme, boutons, ID de l'appareil, niveau de la batterie, état de charge, etc.). Le stylet envoie les informations HID à l'appareil mobile Android, ce qui permet à la plate-forme de mettre en corrélation les données HID avec les données tactiles de l'écran tactile pour générer des événements de stylet à l'aide de la classe MotionEvent. Sous Android 14 et versions ultérieures, les pressions sur les boutons du stylet génèrent également des événements internes à l'aide de la classe KeyEvent. Les données peuvent être envoyées via Bluetooth (BT), Bluetooth Low Energy (BTLE) ou USB.

Exemple de descripteur HID

L'exemple de descripteur HID suivant indique le contact entre les pointes, 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 précisément 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 destinée aux développeurs Android.