Stylet

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

Lignes directrices pour les implémenteurs d'appareils OEM

Pour activer la prise en charge du stylet Bluetooth, les implémenteurs de périphériques OEM doivent prendre en charge Bluetooth (et doivent prendre en charge BTLE pour une compatibilité plus large). La plate-forme gère la collecte de données, la corrélation temporelle et le rendu vers l'application pour les événements de stylet pris en charge.

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

Lignes directrices pour les créateurs d'accessoires pour stylets

Pour implémenter la prise en charge sur un stylet, les responsables de la mise en œuvre de l'appareil doivent utiliser le descripteur HID (Stylus Human Interface Device) présenté ci-dessous pour décrire comment les données du stylet (sensibilité à la pression, gomme, boutons, ID de l'appareil, niveau de la batterie, état de charge, etc.) sont représentées. . Le stylet envoie les informations HID à l'appareil mobile Android, permettant à la plateforme 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 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 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 rapporté par le stylet via Bluetooth, qui peut correspondre à 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
}

Lignes directrices pour les développeurs d'applications avec stylet

La plate-forme Android gère automatiquement le couplage et la corrélation des événements, de sorte que les applications existantes et nouvelles prennent en charge le stylet Bluetooth par défaut. Pour en savoir plus sur la prise en charge des stylets dans les applications Android, consultez la documentation du développeur Android .